Network TCP와 UDP

1. 인터넷 프로토콜의 4계층

인터넷 프로토콜의 4계층에 대해서 살펴보겠습니다.

계층 프로토콜
애플리케이션 계층 HTTP, FTP
전송 계층 TCP,UDP
인터넷 계층 IP
네트워크 인터페이스 계층 Empty

인터넷 프로토콜은 해당 총 4개의 계층으로 이루어져있고 애플리케이션 계층, 전송계층, 인터넷계층, 네트워크 인터페이스 계층 으로 구성되어있습니다.

2. 프로토콜 계층

  • 애플리케이션
    애플리케이션 계층웹 브라우저(크롬), 네트워크 , 게임, 채팅 프로그램으로 구성되어있습니다. 그리고 Socket 라이브러리로 구성되어 있습니다.

  • OS(Operation System)
    OS계층은 TCP, UDP, IP(Internet Protocal) 로 구성되어 있습니다.

  • 네트워크 인터페이스
    LAN 드라이버, LAN 장비, LAN카드

네트워크 인터페이스에서 LAN카드를 통해 인터넷에 접근하게 되고 서버에 전송을 진행하게 됩니다.

전송 과정

  1. 애플리케이션 계층에서 클라이언트가 "Request Message" 메시지를 생성시킵니다.
  2. 애플리케이션 계층에서 해당 메시지들을 Socket라이브러를 통해 전달이 됩니다.
  3. OS계층에서 TCP 정보를 생성하여 TCP세그먼트를 씌워 메시지 데이터를 포함시킵니다.
  4. OS계층에서 IP 패킷이 생성되고 TCP데이터를 포함시킵니다.
  5. 네트워크 인터페이스 계층에서 패킷 단위LAN 카드 장비를 통해 인터넷(물리적정보에) 접속하게 되어 해당 찾고자하는 서버에 요청을 보내게 됩니다.

3. IP 패킷 정보

패킷정보는 출발지 IP랑 목적지 IP, 기타 등등의 값을 가지고 해당 전송데이터를 패킷으로 감싸주는 형태로 진행됩니다.

4. TCP/IP 패킷 정보

  • IP 패킷: 출발지 IP, 목적지 IP, 기타 데이터
  • TCP 세그먼트: 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증 정보

IP패킷안에 TCP세그먼트를 감싸고 그안에 전송데이터를 담아서 네트워크상에 전송되게 됩니다.
즉, IP만으로는 해결할 수 없었던 출발지,목적지 PORT번호가 있기때문에 전송제어나 순서보장, 검증정보를 통해 문제점들을 해결 할 수 있게 되었습니다.

5. TCP(Transmission Control Protocal)

TCP(Transmission Control Protocal)전송 제어 프로토콜이라고 불리어 오며 특징들에 대해서 살펴보도록 하겠습니다.

  1. 연결지향 - TCP 3 Way handshake(가상 연결)
    개념적으로만 연결된 것을 의미합니다.
  2. 데이터 전달 보증
    패킷 누락시 메시지를 못받는지를 알 수 있습니다. 데이터가 전송되고 데이터가 잘 받았는지를 확인할 수 있습니다.
  3. 순서 보장
    순서를 보장해줍니다.

예시

패킷1,패킷2,패킷3을 순서대로 보낸다고 가정하면 패킷을 보내다가 노드의 의 접근이 바뀌어 순서가 정확하게 오지 않았을 경우 서버에서 해당 순서를 확인하여 잘못되었음을 판단을 하게 됩니다. 이때, 순서가 잘못 들어온 패킷이 3번이라고 가정하면 해당되는 패킷의 순서부터 다시 재전송을 요청하게 됩니다. 즉, 최적화를 내부적으로 진행할 수 있습니다.

  1. 신뢰할 수 있는 프로토콜
    현재는 TCP가 대부분의 전송에 있어서 사용되고 있으며 매우 중요한 개념입니다.

6. TCP 3way handshake

  • SYN: 접속을 요청합니다.
  • ACK: 요청을 수락합니다.
  1. 클라이언트가 서버에게 SYN(Syncronized)의 connect 연결과정을 요청합니다.
  2. 서버는 해당 클라이언트부터 SYN을 전송받고 클라이언트에게 SYN+ACK(연결 상태)를 함께 전송합니다.
  3. 클라이언트는 서버로 부터 해당 SYN+ACK(연결상태)를 전송받고 다시 서버에게 잘 받았다는 의미로 ACK을 전송시켜주게 됩니다.
  4. 해당 ACK을 전송받은 서버는 이때 잘 연결되었다는 의미로 알고 데이터를 전송시켜줍니다.

이러한 3way-handshake과정은 클라이언트와 서버의 신뢰관계(연결 상태를 확인)하는 과정을 진행하는 것이라고 생각하시면 됩니다.

7. UDP(User Datagram Protocal)

UDP(User Datagram Protocal)는 사용자 데이터그램 프로토콜이라고 불리어옵니다.

TCP와 매우 대조적인 특징을 가지고 있는데 살펴보겠습니다.

  1. 연결지향 - TCP와는 다르게 TCP 3 way-handshake가 없습니다.
  2. 데이터 전달 보증이 되지 않습니다.
  3. 순서가 보장되지 않습니다.
  4. 데이터 전달 및 순서가 보장되지 않지만 매우 단순하고 빠른 특징을 가지고 있습니다.

즉, IP와 유사하지만 UDP에는 PORT와 체크섬(Checksum)이 존재하게 됩니다. 체크섬(Checksum)은 메시지의 검증 데이터를 일컫는 말입니다. 그리고 애플리케이션에서 추가작업이 필요로 될 수 있습니다.