Computer Science/[ Network ] 13

[ Network ] 12. NAT(Network Address Translation)란?

NAT Network Address Translation NAT(네트워크 주소 변환)은 IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술이다. 패킷에 변화가 생기기 때문에 IP나 TCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야 한다. 그렇기 때문에 네트워크의 성능에 영향을 줄 수밖에 없다! NAT를 쓰는 이유는 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위한 경우가 대부분이다. 예를 들어 인터넷 회선을 하나 개통하고 인터넷 공유기를 달아서 여러 PC를 연결하여 사용 하는데, 이것이 가능한 이유가 인터넷 공유기에 NAT기능이 탑재되어 있기 때문이다. 중요한 자료가 들어있는 서..

[ Network ] 11. Proxy Server란?

Proxy Server 네트워크 프로그램의 일종으로서 클라이언트 기준으로 방화벽을 넘어가서 서버와 클라이언트 간에 인터넷으로 직접 접속을 허용하여 특정 서비스를 중계해주는 역할을 하는 구조물이다. 프록시 서버는 서버에 있는 소켓을 열고, 그 소켓을 통해 인터넷으로의 통신을 허용한다. 예를 들어, 사용자의 컴퓨터가 보호받는 네트워크의 안쪽에 있고, 웹 브라우저를 사용하여 웹 검색을 하고 싶다면 방화벽 상에서 Proxy Server를 설정해야 한다. 클라이언트는 필요한 서비스를 프록시 서버에 요청하고, 서버는 클라이언트의 요청에 따라 외부 네트워크와 연결해주는 서비스 중계 역할을 한다. 클라이언트(자신의 컴퓨터)와 서버(목적지) 사이 데이터를 중계하는 중간 서버 역할!! 보통 어떤 서버에 우회 접속하거나 내..

[ Network ] 10. OSI 7계층

OSI 7계층 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것. 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문이다. 흐름을 한눈에 알아보기 쉽고, 사람들이 이해하기 쉽고, 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있기 때문이다! 그럼 예를 들어서, PC방에서 오버워치를 하는데 연결이 끊겼다. 어디에 문제가 있는지 확인해보자 1. 모든 PC에 문제가 있다면 라우터의 문제(3계층 네트워크 계층)이거나 광랜을 제공하는 회사의 회선문제(1계층 물리 계층) 2. 한 PC만 문제가 있고 오버워치 소프트웨어에 문제가 있다면(7계층 어플리케이션 계층), 오버워치 소프트웨어에 문제가 없고 스위치게 문제가 있으면(2..

[ Network ] 09. Linux에서 FTP로 디렉토리 전체 다운받기

linux에서 FTP로 디렉토리 전체 다운받는 방법 FTP를 이용해서 특정 디렉토리 및 그 하위 내용을 모두 받으려면 (recursively) 어떻게 해야 할까? 물론 FileZilla 같은 GUI FTP 클라이언트 프로그램을 사용하면 쉽게 받을 수 있다. 하지만 GUI 프로그램을 사용할 수 없는 Shell 환경에서라면 wget 명령을 사용해서 받아오는 방법이 있다. wget [OPTION]... [URL] ... 예를 들어, FTP 서버 IP가 1.1.1.1 이고 계정은 user1 암호는 password1 받고 싶은 디렉토리 경로가 /home/user1/download 라면 아래와 같이 입력하면 된다. wget -r --ftp-user=user1 --ftp-password=password1 ftp://..

[ Network ] 08. FTP(File Transfer Protocol)

FTP File Transfer Protocol 파일전송 프로토콜의 약자로 TCP/IP 네트워크 상에서 컴퓨터들이 파일을 교환하기 위해 1971년에 최초로 공개된 통신 규약이다. 네트워크에 연결된 컴퓨터끼리 데이터를 원활하게 교환하기 위한 목적으로 개발되었다. 파생형으로 FTP에 TLS 프로토콜이 적용된 FTPS가 있으며, 비슷한 기능을 제공하는 SSH 프로토콜 기반의 SFTP가 있다. SFTP는 FTP라는 키워드를 포함하고 있으며 용도 또한 같으나 FTP와 기술적인 연관성은 없는 완전히 다른 프로토콜임을 주의해야 한다. FTP는 비밀번호가 평문으로 전송되어 보안성이 매우 떨어지므로 FTPS를 사용하는걸 적극 권장한다. FTPS의 경우 PROT P를 사용하면 데이터 전송까지 암호화되어 높은 보안성을 지니..

[ Network ] 07. 핸드세이크(Handshake)

핸드세이크(Handshake) 통신의 양측 간에 조건에 합의해 가는 정보 교환 과정 - DTE, DCE DTE : Data Terminal Equipment DCE : Data Communications Equipment DTE 사용자 - 네트워크 인터페이스의 사용자측에서 데이터발신 장치나 수신 장치, 또는 두 가지 겸용으로 사용되는 장치 DTE는 반드시 모뎀과 같은 DCE 장치를 통해 데이터 네트워크에 연결되며, 일반적으로 DCE에 의해 생성된 클럭처리 신호를 말한다. DTE에는 컴퓨터, 멀티플렉서, 라우터 등과 같은 장치가 포함된다. DCE 사용자 - 네트워크 인터페이스의 네트워크 측으로 구성되는 통신 네트워크 장비의 연결 수단 DCE는 네트워크로 연결되는 물리적 수단이며, 트래픽을 전송하고, DCE..

[ Network ] 06. SSL/TLS

SSL/TLS란? Secure Socket Layer, Transport Layer Security 전송 계층 상에서 클라이언트, 서버에 대한 인증 및 데이터 암호화 수행 클라이언트와 서버 양단 간 응용계층 및 TCP 전송계층 사이에서 안전한 보안 채널을 형성해 주는 역할을 수행하는 보안용 프로토콜 주요 응용 HTTP(HTTPS), FTP(FTPS), TELEMENT, SMTP, SIP, POP, IMAP 등에서 사용 가능 주로, 웹 브라우저와 웹 서버사이의 안전한 보안 채널을 제공하기 위해 많이 사용된다 OpenSSL *DTLS는 TLS프로토콜은 UDP에 적용가능하게 해주는 UDP를 위한 프로토콜이다. 그러므로 UDP기반의 애플리케이션들은 이 DTLS를 사용함으로 도청, 간섭, 메시지 변조 등 네트워크..

[ Network ] 05. TCP와 UDP

TCP 와 UDP 전송 계층에는 크게 TCP(Transmission Control Protocol) 와 UDP(User Datagram Protocol) 2가지 프로토콜이 있다. -TCP 연결지향적이며 오류제어, 흐름제어, 혼잡제어, 타이머재전송 등의 기능을 하며 연결지향이란말은 데이타를 전송하는 측과 데이타를 전송받는 측에서 전용의 데이타 전송 선로(Session)을 만든다는 의미이다. 데이타의 신뢰도가 중요하다고 판단될때 주로 사용된다.(가상회선 방식 패킷교환) -UDP 비연결지향이며, 최소한의 오류제어 기능만 수행한다. 단순히 데이타를 받거나, 던져주기만 하는 프로토콜이다. UDP는 특히 실시간 멀티미디어 정보를 처리하기 위해서 주로 사용한다.(데이터그램 방식 패킷교환) 여기서 딱 보이는 둘의 차이..

[ Network ] 04. 전송계층(Transport Layer)

전송계층(Transport Layer) 먼저 네트워크란 데이터를 교환하기 위해 전송 매체를 매개로 서로 연결되어 있는 것이고 인터넷은 전세계 컴퓨터들이 서로 연결되어있는 거대한 네트워크를 뜻한다. 사람간의 대화에서 같은 언어를 이용해 의사소통 하듯 네트워크 상에서 데이터를 주고받기 위해서 일종의 정해진 규약이 있는데 이것을 프로토콜이라고 부른다. 네트워크 상에서 정보를 주고받으려면 어느 경로로 보낼지 어떤 방식으로 데이터를 보낼지 등등 고려해야할 사항이 많다. 만약 하나의 규약을 정해놓았다면 문제가 발생 하였을시 전체를 바꾸어야 하고 또 문제가 발생하기도 쉬울 것이다. 그래서 역할을 나누어 네트워크는 네트워크 계층 구조를 가지게 되었다. 각각의 계층은 모듈단위로 독립적이지만 서로 상호 유기적인 관계를 가..

[ Network ] 03. CAN통신에 관하여

CAN통신이란? Controller Area Network 개요 1985년 벤츠의 의뢰로 Bosch사에서 차량 네트워크용으로 최초로 개발 1980년대까지 자동차는 대부분 기계식 기술의 발전으로 자동차에 다양한 모듈(ECU)들이 생기기 시작 UART의 통신은 각 모듈이 1:1통신을 해서 모듈이 추가될 때마다 더 많은 연결선이 필요 CAN통신은 자동차 내부 전장 및 산업용 제어기에 많이 사용 된다. 노이즈에 강하고 프레임을 하드웨어적으로 처리하므로 스프퉤어 처리가 비교적 단순하다 특징 Multi-Master 구조 통신 신호 충돌 대책이 있음(CSMA/CA) 메시지 ID간 우선 순위가 있다 데이터 송신 충돌 정지 시, 선로가 비어 있을때 자동 재 전송 기능 통신 속도 : 최대 1MBPS 까지 통신 가능 통신 ..

[ Network ] 02. I2C통신에 관하여

이 글은 I2C에 대한 전반적인 설명과 I2C 통신을 GPIO를 이용하여 코드로 구현한 것이므로 매우 긴글임을 주의** I2C란? 1. alc5633q가 무엇이냐? I2C + I2S Stereo Audio Codec 기능을 가지고 있는 반도체 부품 중의 하나. 2. I2C는 무엇이냐? I2C(Inter-Intergrated Circuit, 또는 TWI - Two Wire Interface)는 복수 개의 슬레이브 장치가 복수개의 마스터 장치와 통신하기 위한 프로토콜이다. SPI와 마찬가지로 하나의 완성품을 구성하는 요소들 간의 근거리 통신을 위해 고안되었음. 비동기식 시리얼통신(이하 UART)은 클럭을 맞춰줘야 하고 데이터 라인으로 들어오는 신호를 항상 주시해야 하기 때문에 오버헤드가 있으며 하드웨어가 복..

[ Network ] 01. 안드로이드와 TCP통신을 이용해 채팅서버 구현하기

TCP통신 서버는 서버의 역할을 하기 위해 소켓 객채를 생성한 후 클라이언트로부터 들어오는 데이터를 받기 위해 포트를 열어놓고 대기해야 한다. ( Servet Socket ) 클라이언트는 서버의 IP와 포트의 정보를 알아야 한다. ( Socket ) 소켓 끼리의 통신하는 것이다 !! 서버와 클라이언트가 1대1로 채팅을 할 수 있도록 구현하기 ConsoleChatServer.java : 서버 ConsoleChatClient.java : 클라이언트 클라이언트와 서버의 input/output을 쓰레드로 구현 ClientSenderThread ClientReceiveThread ServerSenderThread ServerReceiveThread package single.console.chat; import ..

[ Network ] 00. 네트워크란 무엇인가

Network 20-04-22 수 TCP ? UDP? 프로토콜? 프로토콜 : 약속 TCP통신을 할거야 우린~ => 연결지향 : 데이터를 보내고 잘 갔는지 확인하고 제대로 안갔으면 다시 확인 네트워크프로그래밍 : 서버가 있어야 해요~ pc&pc연결 ~ => 서버와 클라이언트를 만들어야 한다. 어떤식으로 데이트를 받고 데이터를 처리해야하겠다라고 명시해놓은 pc가 있어야한다.(서버) 요청을하는pc(클라이언트) 우리는 그동안 서버역할을 하는 tomcat(웹)이나 oracle(DB)을 설치해서 사용했다. 자바에서 "쓰레드", "네트워크", "IO"에 대한 기본 개념은 필수이다! > URLTest2.java URl객체를 생성 image copy image폴더에 저장