[Network] Chapter 6. 전송 계층 : 신뢰할 수 있는 데이터 전송하기
Table of Contents
모두의 네트워크 책을 읽고 공부한 노트입니다.
전송 계층의 역할 #
- 전송 계층
- 목적지에 신뢰할 수 있는 데이터를 전달하기위해 오류를 점검한다. 따라서 상위 계층들이 데이터 전달의 유효성이나 효율성을 신경 쓰지 않아도 되게 한다.
- 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별한다.
- 연결형 통신
- 신뢰할 수 있고 정확한 데이터를 전달하는 통신이다.
- 상대편과 확인해 가면서 통신한다.
- TCP(Transmission Control Protocol)가 사용된다.
- 비연결형 통신
- 효율적으로 데이터를 전달하는 통신이다.
- 상대편을 확인하지 않고 일방적으로 데이터를 전송한다.
- 예를 들면, 동영상을 볼 때 비연결형 통신을 사용한다.
- UDP(User Datagram Protocol)가 사용된다.
TCP의 구조 #
- 전송 계층에서는 캡슐화할 때 TCP 헤더를 붙인다.
- TCP 헤더가 추가되어 만들어진 것을 세그먼트(segment)라고 한다.
3-way handshake #
- 데이터를 전송하려면 먼저 연결(connection) 이라는 가장의 독점 통신로를 확보해야한다.
- 이 연결을 확립하기 위해서 패킷 요청을 세 번 교환하는 것을 3-way handshake라고 한다.
- TCP 통신에서 신회성을 제공하기 위한 통신 방식이다.
- 연결 확립
- 연결요청
SYN
과 확인응답ACK
를 사용해서 연결을 확립한다.
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 데이터그램이라고 한다.
Image Source