전송 계층
전송 계층은 신뢰할 수 있는 데이터를 순차적으로 전달하는 역할을 하므로 상위 계층들이 데이터 전달의 유효성이나 효율성을 신경 쓰지 않도록 한다. 데이터가 중복되거나 누락되지 않고 오류 없이 순서에 맞게 전송되도록 관리한다.
전송 계층의 역할
- 전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요하다.
- 오류를 점검하는 기능이 있다. 오류가 발생하면 데이터를 재전송하도록 요청한다.
- 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능도 있다.
전송계층의 특징은 신뢰성/정확성과 효율성으로 구분된다. 정확한 데이터를 전달하는 통신을 연결형 통신이라고 하고, 효율적으로 데이터를 전달하는 통신을 비연결형 통신이라고 한다. 연결형 통신은 여러번 확인하는 반면, 비연결형통신은 확인 절차 없이 일방적으로 보낸다.
연결형 통신 프로토콜에는 TCP가 사용되고, 비연결형 통신 프로토콜에는 UDP가 사용된다.
TCP(Transmission Control Protocol)의 구조
연결형 통신 방식이며 신뢰할 수 있는 데이터 전송을 보장한다.
- 전송 계층에서는 TCP 헤더가 붙는다.
- TCP 헤더가 붙은 데이터를 세그먼트라고 한다.
- 연결(connection)을 확립하기 위해 TCP 헤더에 있는 코드 비트를 사용한다.
- 코드 비트 중
SYN
은 연결 요청,ACK
는 연결 응답,FIN
은 연결 종료를 뜻한다. - 연결 확립을 위해 패킷 교환을 세 번 하는데 이를 3-way 핸드셰이크라고 한다. 3-way 핸드셰이크는 TCP 통신에서 사용하는 신뢰성을 제공하기 위한 통신방식으로, 컴퓨터 간에 연결을 맺기 위한 초기화 과정이다.
- 연결을 확립할 때는
SYN
과ACK
를 사용하고, 연결을 종료할 때는FIN
과ACK
를 사용한다.
일련번호와 확인 응답 번호의 구조
TCP에서는 데이터를 보낼 때마다 각 데이터에 고유한 번호를 부여해서 전송을 시도한다. 이 번호를 이용하여 TCP 패킷의 순서를 제어할 수 있다.
- 3-way 핸드셰이크 이후 데이터를 전송할 때는 TCP 헤더의 일련번호와 확인 응답 번호가 사용된다.
- 데이터를 재전송하는 것을 재전송 제어라고 한다.
- 데이터 크기가 버퍼 크기를 넘어서는 것을 오버플로라고 한다.
- 버퍼 용량의 크기를 윈도우 크기라고 한다.
포트 번호의 구조
포트 번호는 컴퓨터가 데이터 통신을 할 때 통신하고자 하는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다.
- 포트 번호는 어떤 애플리케이션인지 구분하는 역할을 한다.
- 포트 번호는 0~65535번을 사용한다. 0~1023번은 잘 알려진 포트(well-known ports)라고 하고 1025번 이후는 랜덤 포트라고 한다.
UDP(User Datagram Protocol)의 구조
UDP는 정보를 서로 주고받을 때 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜이다. 연결을 맺을 필요도 없고 정보를 보내거나 받는다는 신호도 필요하지 않다.
- UDP는 데이터를 효율적이고 빠르게 보낼 때 사용되는 프로토콜이다.
- UDP는 UDP 헤더가 있지만 TCP 헤더에 비해 간단하다.
- UDP 헤더가 있는 데이터를 UDP 데이터그램이라고 한다.
- UDP는 랜에서 불특정 다수에게 브로드캐스트로 데이터를 일괄 전송한다.