패킷이 전송 과정에서 아무 문제 없이 제대로 수신지 컴퓨터에 도착할 수 있도록 패킷 전송을 제어하는 역할을 한다.
이 말은 즉슨 네트워크의 상태에 따라 패킷 전송량을 조절해 흐름을 제어하고 수신지 컴퓨터까지 패킷이 제대로 도착했는지 확인하는 오류 제어의 역할을 한다는 뜻이다.
결론은 전송 계층은 신뢰할 수 있는 데이터를 전송하기 위한 계층이다.
전송 계층의 전송 프로토콜은 크게 두 가지가 있는데
연결형 통신인 TCP
, 비연결형 통신인 UDP
가 있다.
특징
연결형 통신
수신지와 데이터가 제대로 도착했는지 확인하면서 통신하는 방식
수신지와 연결을 맺고 연결을 관리하는 프로토콜
신뢰성
이 높다
TCP로 전송할 때 붙는 헤더를 TCP 헤더
라고 하며, TCP 헤더가 붙은 데이터를 세그먼트
라고 한다.
3-way handshake
데이터를 보내기 전 연결을 하기 위해 패킷 요청을 3번 교환하는 것
첫 연결에 코드 비트
의 SYN
에 1을 담아 보내고
응답하는 컴퓨터가 ACK
에 1, SYN
에 1을 담아 응답하면
응답받은 컴퓨터가 다시 ACK
에 1을 담아 보내서 연결을 확립하는 방식이다.
연결을 끊을 때는 FIN
에 1을 담아보내고 ACK
에 1로 응답을 받는 것을 반복한다.
-> 4-way handshake
특징
비연결형 통신
수신지에 일방적으로 데이터를 전송하는 방식
연결의 필요성이 없다
효율적
으로 데이터를 전달한다
UPD로 전송할 때는 UDP 헤더
가 붙으며 UDP 헤더가 붙은 데이터를 UDP 데이터그램
이라 한다.
오류 확인 및 수정이 필요하지 않거나 시간에 민감한 애플리케이션에서 많이 사용한다.
온라인 게임, 음성 및 비디오 트래픽(스트리밍), DNS 서버 등
TCP
나 UDP
에서 애플리케이션이 상호 구분을 위해서 사용하는 번호이며 IP 내에서 프로세스를 구분하기 위해서 사용한다.
즉, 프로토콜의 데이터가 이동하는 논리적 통로이다.
0 ~ 65535
번까지 존재하며 0 ~ 1023
은 well-known port
라고 불리며 주요 프로토콜들이 사용하고 국제 도메인 관리 기구에서 통제하고 있다.
well-known port (0 ~ 1023)
20,21 - FTP 파일 전송 프로토콜 (TCP)
22 - SSH 보안 셸 (TCP)
25 - SMTP 단순 메일 전송 프로토콜 (TCP)
53 - DNS 도메인 네임 시스템 (UDP
80 - HTTP 하이퍼텍스트 전송 프로토콜 (TCP)
123 - NTP 네트워크 시간 프로토콜 (TCP)
443 - HTTPS 하이퍼텍스트 전송프로토콜 시큐어 (TCP)
등록 포트 (1024 ~ 49151)
3306 - MySQL
3389 - RDP 원격 데스트톱 프로토콜
5432 - PostgreSQL
동적 포트 (49152 ~ 65535)