인터넷 네트워크 통신 개요
인터넷 네트워크
인터넷 프로토콜 스택의 4계층
- 애플리케이션 계층 (HTTP,FTP)
- 가장 최상위의 계층
- socket 라이브러리를 통해 요청 전달
- 전송 계층 (TCP,UDP)
- 인터넷 계층 (IP)
- 네트워크 인터페이스 계층
- 랜카드, 랜드라이브 등을 의미한다.
애플리케이션 계층에서 요청 받은 데이터를 socket 라이브러리를 통해 전달하고 이후 TCP -> IP 의 순서로 정보가 생성되어 마지막에 네트워크 인터페이스에서 Ethernet frame 으로 전달된다.
IP(인터넷 프로토콜)
- 지정한 IP 주소에 데이터 전달
- 패킷이라는 통신 단위로 데이터 전달
IP 패킷
- 출발 IP 와 목적 IP 의 주소와 그 외 내용을 포함한다.
- 클라이언트와 서버간에 인터넷의 여러 노드를 통해 통신한다.
IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
- 신뢰성이 낮다.
- 패키지의 순서가 보장되지 않는다.
- 프로그램 구분
- 같은 IP 에서 여러 app이 구동될 때 구분할 수 없다.
TCP
- 출발 port, 목적 port 정보를 가진다.
- port를 통해 프로그램을 구분한다.
- port 정보 외에도 전송 제어, 순서, 검증 등의 다양한 정보를 포함한다.
- 연결지향
- IP 의 비연결성을 해결한다.
- 데이터의 전달을 보증하고 순서를 보장한다.
- IP 의 비신뢰성을 해결한다.
- 신뢰할 수 있는 프로토콜이다.
TCP 3 way handshake
TCP 에서 클라이언트와 서버가 통신하는 방식이다.
- SYN 으로 서버의 연결을 확인한다.
- 서버에서 연결이 가능한 상태를 응답하기 위해 SYN + ACK 로 응답한다.
- 클라이언트는 응답을 받은 후 응답에 대한 확인을 ACK로 응답한다.
- 데이터를 전송한다.
IP에서 클라리언트가 서버 연결 여부와 상관 없이 데이터를 전송했다면 TCP 를 통해 서버의 연결여부를 3단계에 걸쳐 확인한 후 데이터를 전송한다.
요즘에는 최적화가 잘 되어서 서버와 연결을 확인된 직후인 3단계에서 서버의 응답을 확인했다는 응답과 함께 데이터를 전송하기도 한다.
순서 보장
- 클라이언트가 지정한 데이터 순서와 다르게 서버가 데이터를 전송 받았다면 TCP 의 전송 제어 정보를 통해 클라이언트로 잘못된 순서부터 다시 데이터를 요청한다.
UDP
UDP 는 IP와 거의 동일하며 IP에서 port정보만 추가된 정도의 프로토콜이다.
심플한만큼 TCP에 비해 추가작업이 용이하며 최적화에 유리하다.
PORT
-
어플리케이션 별로 IP주소에 별도의 세부 주소를 정의한다고 생각하면 된다.
- 해당 세부 주소를 통해 동일 IP에서 어떤 어플리케이션에 데이터를 전송할지 구분한다.
-
0~65535 까지 할당 가능하다.
-
0~1023 : 잘 알려진 포트로 사용하지 않는 것을 권고한다.
DNS
- IP가 변경될 수 있고 사람이 인식하기에 복잡하고 어려운 구조를 가진 단점을 보안하기위한 기능이다.
- DNS 서버를 통해 특정 IP 에 도메인을 부여하여 해당 도메인으로 서버에 접근할 수 있도록 도와준다.
댓글남기기