• 데이터가 제대로 도착했는지 확인한다
  • 데이터가 최종적으로 도착할 애플리케이션이 무엇인지 식별한다.
    • 이는 네트워크 데이터를 어떤 애플리케이션에서 최종적으로 해석하고 사용할지를 의미한다.
    • 여기서 데이터는 HTTP 요청일 수도 있고, FTP를 사용한 파일 다운로드 요청일 수도 있고, 다양하다
  • 목적에 따라 두가지 통신 방법이 존재한다.
  1. 신뢰성과 정확성
    • 데이터를 목적지에 문제 없이 전달하는 방식
    • 이런 통신 방식을 다른 말로 연결형 통신이라고도 한다.
      • 연결형 통신은 상대방과의 통신 과정을 여러 번 확인하고 보내는 방식을 사용하게 된다.
      • 대표적인 프로토콜로 TCP가 있다.
  2. 효율성
    • 데이터를 빠르고 효율적이게 전달하는 방식
      • 대표적인 프로토콜로 UDP가 있다.
      • UDP는 별도의 확인 절차가 없어서 스트리밍 방식과 같은 동영상 서비스에 유리하다.

 

TCP( Transmission Control Protocol )

  • 전송 제어 프로토콜
  • 전송 계층에서 신뢰할 수 있고 정확한 통신을 제공하는 연결형 프로토콜
  • Segment 단위를 사용한다.

 

TCP는 포트 번호라는 주소로 통신한다. 이 포트 번호는 최종적으로 어떤 애플리케이션으로 향하게 될지를 정해주는 요소다.

 

Source Port

  • 송신자의 포트 번호

Destination Port

  • 목적지의 포트 번호

Sequence Number

  • 송신 측에서 수신 측에 이 데이터가 몇 번째 데이터인지 알려주는 역할을 한다.
  • 해당 번호를 통해 수신 측은 원래 데이터의 몇 번째 데이터를 받았는지 알 수 있다.
  • TCP는 이를 이용하여 데이터가 손상되었거나 유실되었는지를 확인하고, 손상이나 유실되었다면 재전송 제어를 하게 된다.

Acknowledgment Number

  • 수신 측이 몇 번쨰 데이터를 수신했는지 송신측에 알려주는 역할이다.
  • 받은 데이터의 다음 번호의 데이터를 요청하는데 사용한다.

Offset

  • TCP 헤더의 크기를 나타내는 값이다.
  • 데이터의 시작 위치를 나타낸다.

Reserved

  • 차후의 사용을 위해 예약된 필드
  • 항상 0으로 설정한다.

TCP Flags

  • 세그먼트의 용도와 내용을 결정하는 플래그 값이다.
  • 총 8 bit로 이루어져 있으며, 각각의 비트에 연결의 제어 정보가 기록된다.
  • 이를 이용해 TCP Connection을 맺고 TCP 통신을 하게 된다.

Window

  • 한번에 전송할 수 있는 데이터 양을 뜻한다.
  • 65535만큼의 값을 표현 가능하고, byte 단위를 사용한다. 64KB
  • 한 번에 전송할 수 있는 데이터의 최대 크기가 65535 byte라고 생각 하면 된다.

Checksum

  • 데이터를 송신하는 중에 발생할 수 있는 오류를 검출하기 위한 값이다.
  • Checksum과 데이터를 더했을 때, 모든 비트가 1이면 정상으로 판단한다.

Urgent Pointer

  • 긴급 포인터
  • URG 플래그가 1이라면 수신 측은 이 포인터가 가리키고 있는 데이터를 우선 처리한다.

TCP Options

  • 약 30개 정도의 TCP 옵션을 설정할 수 있다.
  • 대표적으로 Window 필드의 사이즈를 늘릴 수 있는 옵션이 있다.

 

3-Way Handshake

  • 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세번 교환하는 것을 말한다.
  • TCP Flags를 이용하여 패킷을 교환한다.

 

 

UDP( User Datagram Protocol )

  • 데이터를 효율적으로 빠르게 보낼 때 사용한다.
  • 비연결형 통신이기 때문에 3-Way Handshake 과정이 존재하지 않는다.
    • 신뢰성과 정확성은 떨어지나 효율이 증가한다.

 

UDP 헤더

+ Recent posts