신뢰할 수 있는 데이터를 순차적으로 전달하는 역할을 한다. 상위 계층들이 데이터 전달의 유효성이나 효율성을 신경쓰지 않도록 만든다. 데이터가 중복되거나 누락되지 않고 오류없이 순서에 맞게 전송되도록 관리한다.
4계층에서 TCP를 선택하면, 데이터에 TCP 헤더라는 것이 붙어 캡슐화된다.
TCP 헤더는 위와 같은 구성으로 이루어져있다. 검증 절차를 가져야 하므로 그에 필요한 정보 때문에 UDP보다 상대적으로 복잡한 헤더를 갖는다.
6비트로 이루어진 코드 비트는 위와 같은 플래그로 이루어져있는데, 여기서 주로 사용되는 것은 ACK
, SYN
, FIN
이다.
SYN
: 연결 요청ACK
: 확인 응답FIN
: 종료 요청요청 컴퓨터 A
는 SYN
요청을 상대 컴퓨터 B
에 보낸다.상대 컴퓨터 B
는 ACK
확인 응답을 하고 SYN
요청을 보낸다.요청 컴퓨터 A
는 ACK
확인 응답을 한다.위와 같은 3가지 절차를 3way 핸드쉐이크라 한다.
위와 같은 절차가 끝나면
CONNECTION
이 확립된다.
연결 종료 시에는 FIN
-> ACK
-> FIN
-> ACK
의 4단계 절차가 일어난다.
TCP 헤더의 일련 번호(Sequence Number)와 확인 응답 번호(Acknowledgement Number)는 각 32비트를 차지하는 큰 공간이다. 일련번호와 확인 응답 번호가 갖는 의미는 송신측과 수신측에 따라 다르다.
위와 같은 형식으로 이용된다. 위는 한 번에 데이터를 50바이트만큼 전송하는 예시이다. 50바이트와 같이 한번에 전송되는 데이터의 단위를 세그먼트라고 한다.
만일, 일련 번호나 확인 응답 번호가 어긋난 경우와 같이 데이터가 손상 혹은 유실되면 일정 시간 대기한 후에 데이터를 재전송하며 이를 재전송 제어라고 한다.
윈도우 크기는 세그먼트를 일시적으로 저장하는 버퍼의 한계 크기를 말한다. 즉, 얼마나 많은 용량의 데이터를 저장해둘 수 있는지를 나타내는 크기이다.
TCP 통신에서는 이 버퍼 크기에 들어갈만큼 최대한의 데이터 세그먼트를 수신측에 보낸다. 송신측은 다회의 세그먼트 송신을 버퍼크기만큼 한번에 하고, 수신측은 송신된만큼 다회의 확인 응답을 한번에 한다.
0~65535
(16비트) 까지 사용할 수 있다.0~1023
(0000 0001 1111 1111
) 까지는 예약된 포트번호이다.1024
번 포트는 예약되어있지만 잘 사용되지 않는다고 한다.SSH
: 22SMTP
: 25DNS
: 53HTTP
: 80POP3
: 110HTTPS
: 443신뢰성
보다는 효율성
을 중시한다.데이터에 위와 같은 헤더를 씌워진 데이터를 UDP 데이터그램이라 한다.
데이터를 받아서 TCP Segment
혹은 UDP Datagram
중 하나의 전송 계층 헤더를 데이터에 붙여 캡슐화한다. 혹은 TCP Segment
혹은 UDP Datagram
중 하나의 헤더가 붙은 데이터를 비캡슐화 한다.