[네트워크] TCP, UDP

📄 프로토콜 계층에서의 메세지 전송과정

프로토콜 계층

  1. 프로그램이 Hello, world! 메시지 생성
  2. SOCKET 라이브러리에서 OS계층에 메시지 전달
  3. OS에서 메시지에 TCP정보를 생성하고 IP 패킷을 생성한다.
  4. 네트워크 인터페이스에서 LAN카드를 통해서 나갈 때 Ethernet frame과 함께 나간다.

📌 패킷이란? 인터넷에서 데이터를 보내는 과정을 설정(라우팅)할 때 효율적으로 처리하기 위해 데이터를 여러조각으로 나누는데 이 조각을 패킷이라 한다.

📄 TCP란?

TCP 패킷 정보

TCP 인터넷상에서 데이터를 메세지형태로 보내기 위해 IP와 함께 사용 하는 전송 제어 프로토콜(Transmission Control Protocl)입니다.

▪ TCP특징

  • 연결지향성(TCP 3 way handshake)
    먼저 연결을 하고 메시지를 보낸다. 서버와 클라이언트가 모두 연결 가능상태여야 동작한다.

TCP 3 way handshake 과정

3 way handshake

  1. 클라이언트에서 SYN(접속요청)이라는 메시지를 보낸다.
  2. 서버가 메시지를 받으면 Syn(접속요청)과 ACK(요청 수락)이라는 메시지를 보낸다.
  3. 메시지를 받은 클라이언트가 서버에 ACL(요청수락)을 보낸다. (이 과정에서 데이터도 함께 전송하는 경우도 있다.)
  4. 연결이 되고나면 데이터가 전송된다.

연결 과정에 문제가 생기면 메시지를 보내 않기 때문에 안정성이 보장되고 클라이언트와 서버간의 신뢰가 생성됩니다.
하지만 이러한 연결과정 때문에 UDP보다 속도가 느리다는 단점이 있습니다.
따라서 신뢰성이 요구되는 전송에 우선 사용합니다. 3 way handshake 과정은 실제로(물리적으로) 연결된 것이 아닙니다.
중간의 노드들은 연결과정에서 제외되고 클라이언트와 최종 서버 간의 논리적 연결일 뿐입니다.

  • 데이터 전달 보증
    패킷이 중간에 누락이 되면 상대방이 알 수 있습니다.
  • 순서 보장
    만약 서버에 순서가 맞지 않게 도착했다면(= 데이터가 손실되었다면), 클라이언트에 문제점부터 다시 보내라고 데이터 요청을 합니다.(재요청)
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

📄UDP란?

UDP는 사용자 데이터그램 프로토콜(User Datagram Protocol)을 뜻하며 데이터를 데이트그램 단위로 처리하는 프로토콜입니다.

UDP는 TCP와 다르게 비연결 서비스로 연결을 설정하고 해제하는 과정이 존재하지 않습니다.

UDP 특징

  • 하얀 도화지에 비유(기능이 거의 없음)
  • 비연결성 - TCP 3 way hankshacke x
  • 데이터 전달 보증 x
  • 순서 보장 x
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름

  • 신뢰성보다 연속성이 중요한 서비스에 사용(실시간 스트리밍 서비스)

출처

Leave a comment