이 포스트는 김영한님의 ‘모든 개발자를 위한 HTTP 웹 기본 지식’을 수강하고 작성하였습니다.

TCP/IP 4계층 (TCP/IP 4 Layer)

TCP/IP 4계층
응용 계층
(Application Layer)
HTTP, FTP
전송 계층
(Transport Layer)
TCP, UDP
인터넷 계층
(Internet Layer)
IP
네트워크 접근 계층
(Network Access Layer)

프로토콜 계층

프로토콜 계층

  1. 채팅 프로그램이 ‘I am Yejin’이라는 메시지를 생성한다.
  2. SOCKET 라이브러리를 통해 OS 계층에 메시지를 전달한다.
  3. TCP는 ‘I am Yejin’이라는 메시지에 TCP 정보를 씌운다.
  4. IP는 TCP 바깥에 IP 정보를 씌워 IP 패킷을 생성한다.
  5. 이후 네트워크 인터페이스를 통해 인터넷으로 서버에 전달된다.

TCP 패킷 정보

TCP 패킷 정보
출발지 IP, 목적지 IP, 기타…
출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보, 기타…
전송 데이터

TCP (전송 제어 프로토콜; Transmission Control Protocol)

  1. 연결 지향이다. - TCP 3 way handshake (가상 연결)
  2. 데이터 전달을 보증한다.
  3. 패킷의 도착 순서를 보장한다.
  4. 신뢰할 수 있는 프로토콜이다
  5. 현재는 대부분 TCP를 사용한다.

TCP 3 way handshake

TCP 3 way handshake

  1. 클라이언트가 서버에게 SYN를 보낸다.
  2. 서버는 클라이언트에게 ACK에게 보내면서 SYN을 보낸다.
  3. 클라이언트는 서버에게 ACK를 보낸다. 이 때 클라이언트는 ACK와 함께 데이터를 전송할 수 있다.
  4. TCP 3 way handshake를 이용하면 클라이언트와 서버가 연결이 되었음을 인식할 수 있고, TCP 3 way handshake는 논리적 연결 방식이다.

단점

  1. 클라이언트와 서버에 응답이 오가면서 시간이 걸린다.
  2. 데이터 양이 크고, 전송 속도를 더 빠르게 만들기 어렵다.

데이터 전달 보증

  1. 클라이언트가 서버에 데이터를 전송하면 서버는 데이터를 받았다고 서버에 응답한다.

순서 보장

  1. 클라이언트가 서버에 패킷1, 패킷2, 패킷3을 전송했는데, 서버에 패킷1, 패킷3, 패킷2의 순서로 패킷들이 도착하면 서버는 클라이언트에 패킷2부터 다시 보내라고 응답한다.
  2. TCP 내의 전송 제어, 순서, 검증 정보를 이용한다.
  3. 서버에서 패킷 순서를 최적화하는 방법은 각각 다르다.

UDP (사용자 데이터그램 프로토콜; User Datagram Protocol)

  1. 기능이 거의 없다.
  2. 연결 지향이다. - TCP 3 way handshake
  3. 데이터 전달 보증
  4. 순서 보장
  5. 단순하고 빠르다.
  6. IP와 거의 같은데, PORT와 체크섬 정도만 추가되었다.
  7. 어플리케이션에서 추가 작업이 필요하다.

UDP를 쓰는 이유

  1. HTTP3 통신을 할 때 UDP를 쓴다.

태그: , ,

카테고리:

최초작성:

댓글남기기