[모든 개발자를 위한 HTTP 웹 기본 지식] 01. 인터넷 네트워크 - TCP, UDP

Yewon Kim·2022년 7월 31일
0
post-thumbnail

🔊본 포스팅은 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 Inflearn 강의를 수강하고 정리한 글입니다.

3. TCP, UDP

앞서 보았던 IP 프로토콜의 한계점들을 해결해 주는 것이 바로 TCP이다.

1) 인터넷 프로토콜 스택의 4계층

2) 프로토콜 계층

채팅 프로그램에서 Hello, word! 라는 메시지를 보내는 상황을 가정한다.

1️⃣ 채팅 프로그램이 Hello, world! 라는 메시지를 생성한다.
2️⃣ 생성된 메시지를 SOCKET 라이브러리를 통해 OS 계층에 넘긴다.
3️⃣ OS 계층의 TCP 계층에서 메시지 데이터(Hello, world!)를 포함해 TCP 정보를 생성한다.
4️⃣ OS 계층의 IP 계층에서 TCP 정보를 포함해 IP 패킷을 생성한다.
    - IP 패킷: (IP 관련 정보 + (TCP 관련 정보 + (메시지 데이터)))
5️⃣ IP 패킷이 LAN 카드의 MAC 주소 등 물리적 정보가 포함됨.

3) IP 패킷 정보

4) TCP/IP 패킷 정보

  • TCP 정보가 추가되면서 IP의 한계점이 해결되었다.
    TCP 정보: 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증정보 ...

5) TCP 특징

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

  • 연결지향 - TCP 3 way handshake(가상 연결)
    - 먼저 연결을 한 다음 메시지를 보냄
    - 여기서 말하는 연결은 물리적인 연결이 아닌, 논리적인 연결이다.

TCP 3 way handshake
① 클라이언트가 서버에게 접속을 요청하는 SYN을 보냄
② 서버가 SYN을 받았으면, 서버에서 클라이언트로 접속을 요청하는 SYN과 함께 ACK를 보냄
③ 클라이언트가 SYN을 받았으면, 서버로 ACK를 보냄
3 way handshake 후, 클라이언트와 서버는 서로 연결되었다는 것을 인식한다.
④ 클라이언트가 서버로 데이터를 전송한다.
요즘은 3번 단계에서 ACK와 함께 데이터를 보내기도 함

  • 데이터 전달 보증
    - 패킷 손실이 되어 서버가 메시지를 받지 못한 경우, 클라이언트가 알 수 있다.

    클라이언트가 데이터를 전송하고 서버가 데이터를 받았으면 클라이언트로 응답을 해준다.

  • 순서보장

    클라이언트에서 패킷을 보낸 순서대로 서버로 오지 않으면 서버가 클라이언트에 다시 순서대로 패킷이 전송되도록 요청한다.

  • 신뢰할 수 있는 프로토콜

  • 현재는 대부분 TCP 사용

6) UDP 특징

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

  • 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • IP와 거의 유사(PORT, checksum 정도만 추가됨)
  • 애플리케이션에서 추가 작업 필요

0개의 댓글