Skip to main content

[Network] Chapter 6. 전송 계층 : 신뢰할 수 있는 데이터 전송하기

모두의 네트워크 책을 읽고 공부한 노트입니다.




전송 계층의 역할 #

  • 전송 계층
    • 목적지에 신뢰할 수 있는 데이터를 전달하기위해 오류를 점검한다. 따라서 상위 계층들이 데이터 전달의 유효성이나 효율성을 신경 쓰지 않아도 되게 한다.
    • 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별한다.

  • 연결형 통신
    • 신뢰할 수 있고 정확한 데이터를 전달하는 통신이다.
    • 상대편과 확인해 가면서 통신한다.
    • TCP(Transmission Control Protocol)가 사용된다.
  • 비연결형 통신
    • 효율적으로 데이터를 전달하는 통신이다.
    • 상대편을 확인하지 않고 일방적으로 데이터를 전송한다.
    • 예를 들면, 동영상을 볼 때 비연결형 통신을 사용한다.
    • UDP(User Datagram Protocol)가 사용된다.



TCP의 구조 #

  • 전송 계층에서는 캡슐화할 때 TCP 헤더를 붙인다.
    • TCP 헤더가 추가되어 만들어진 것을 세그먼트(segment)라고 한다.

TCP 헤더
Image Source


3-way handshake #

  • 데이터를 전송하려면 먼저 연결(connection) 이라는 가장의 독점 통신로를 확보해야한다.
  • 이 연결을 확립하기 위해서 패킷 요청을 세 번 교환하는 것을 3-way handshake라고 한다.
    • TCP 통신에서 신회성을 제공하기 위한 통신 방식이다.

  • 연결 확립
    • 연결요청 SYN과 확인응답 ACK를 사용해서 연결을 확립한다.
      3-way handshake
      Image Source
  • 연결을 끊을 때
    • 연결종류 FIN과 확인응답 ACK를 사용해서 연결을 끊는다.
      연결을 끊을 때
      Image Source

일렬번호와 확인응답 번호 #

  • 3-way handshake로 연결을 끝마친 후에는 일렬번호와 확인응답 번호를 사용해서 데이터를 주고받는다.
  • (TCP 헤더에 있는) 일렬번호(sequence number)
    • 송신 측에서, 보내는 데이터가 몇 번째 데이터인지 알려주는 역할을 한다.
    • 이 번호를 사용해서 TCP 패킷의 순서를 제어할 수 있다.
  • (TCP 헤더에 있는) 확인응답 번호(acknowledgement number)
    • 수신 측에서, 다음으로 받고 싶은 데이터가 몇 번째 데이터인지 알려주는 역할을 한다.

  • 재전송 제어
    • 데이터가 항상 올바르게 전달되는 것은 아니므로, 일렬번호와 확인응답 번호를 사용해서 데이터가 손상되거나 유실된 경우에 데이터를 재전송하게 되어있다.

  • 매번 확인응답을 기다리는 대신에 세그먼트를 연속해서 보내고 난 다음에 확인응답을 반환하면 효율이 높아지겠다.
    • 상대방의 세그먼트가 쌓일 수 있게 하기 위한 버퍼(buffer) 가 존재한다.
    • 이 버퍼가 넘쳐버리면 오버플로(overflow) 가 발생하므로, 3-way handshake를 할 때 서로의 버퍼 한계 크기(TCP 헤더에서 window size)를 주고 받는다.

포트 번호 #

  • 전송 계층에서는 또한 전송된 데이터를 어떤 애플리케이션에 전송해야 하는지도 알려준다.
  • 목적지가 어떤 애플리케이션인지 구분하기 위해서는 다음 것들이 필요하다.
    • (TCP 헤더에 있는) 출발지 포트 번호(source port number)
    • (TCP 헤더에 있는) 목적지 포트 번호(destination port number)

  • 포트 번호
    • 통신 하고자 하는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다.
    • 0~65535번 범위에서 사용할 수 있다.
  • 포트 번호 구성
    포트 번호 설명
    0~1023번 주요 프로토콜이 사용하도록 예약된 잘 알려진 포트(well-known prots)이다.
    1024번 예약되어 있지만 사용되지 않는 포트이다.
    1025번 이상 랜덤 포트라고 해서, 클라이언트 측으로 가는 송신 포트로 사용된다.
  • 애플리케이션별 포트 번호
    애플리케이션 포트 번호
    SSH 22
    SMTP 25
    DNS 53
    HTTP 80
    POP3 110
    HTTPS 443



UDP의 구조 #

  • TCP와 달리, UDP는 효율성을 중요하게 생각하는 비연결형 통신이라서 TCP처럼 확인 작업을 일일이 하지 않는다.
  • 또한 UDP를 사용하면 LAN에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보내는 브로드캐스트(broadcast) 를 할 수 있다.

  • UDP 헤더가 붙은 데이터를 UDP 데이터그램이라고 한다.
    UDP 헤더
    Image Source