Layer 4. Transport Layer
Transport 계층은 서비스를 구분하고 데이터 통신방식을 결정하는 계층이다.
4계층은 데이터를 생성하는 상위계층과 데이터를 전달해주는 하위계층을 연결해주는 역할을 담당하고 있다. 상위계층의 서비스들을 구분하여 정확하게 서비스를 제공받을 수 있도록 도와주며, 데이터의 성격에 따라 통신방식을 달리하여 효율적으로 통신될 수 있도록 의사결정을 해준다.
1. 서비스 구분 번호
Port number
: 포트번호는 서비스 구분 번호라고도 불리는 Transport 계층의 주소이다. Application 계층에서는 다양한 서비스를 제공받고 제공하고 있으며 이러한 서비스들을 구분하기 위해 숫자로 식별값을 부여했는데 이를 Port number라고 한다.
총 0 ~ 65535번의 값을 사용하고 이 중에서 0 ~ 1023번은 가장 빈번하게 사용되는 대표적인 프로토콜에게 할당되어 있다. 잘 알려진 포트번호라는 뜻으로 Well-known port number라고 한다. 이 뒤의 주소는 랜덤포트번호라고 하고 이 중에서도 상용 어플리케이션들이 IANA에 등록하고 사용하는 등록번호(Registered number)가 1024 ~ 49151번으로 따로 구분되어 있다.
대표적인 Well-known Port
Protocol |
Rule |
Port |
DNS |
도메인과 IP를 변환해주는 서비스 |
53 / UDP |
DHCP |
IP 자동할당 서비스 프로토콜 |
67,68 / UDP |
FTP |
(대용량) 파일 전송 프로토콜 |
20(data),21(control) / TCP |
TFTP |
(소용량) 파일 전송 프로토콜 |
69 / UDP |
HTTP |
웹 서비스 프로토콜 |
80 / TCP |
HTTPS |
보안 웹 서비스 프로토콜 |
443 / TCP |
Telnet |
원격접속 프로토콜 |
23 / TCP |
SSH |
보안 원격접속 프로토콜 |
22 / TCP |
데이터 통신 방식 결정
TCP (Transmission Control Protocol)
: 신뢰성을 가지고 있지만 통신속도가 UDP보다 느린 통신방식이다.
데이터를 보내기 전에 통신이 가능한 상태인지를 확인하고, 데이터를 전달하면서 정확하게 전달이 되었는지 통신상태를 확인해주는 확인응답인 ACK 패킷을 지속적으로 전달하는 절차를 가지고 있어서 신뢰성이 있는 프로토콜이라고 부른다. 이처럼 신뢰성을 제공하기 때문에 오류제어와 흐름제어와 같은 기능을 제공한다.
오류제어
: 데이터 전달에서 오류 또는 손실이 발생된 경우, 해당 데이터를 재전송하여 처음부터 끝까지 정확하게 모든 데이터를 전달할 수 있도록 제어하는 기능
흐름제어
: 빠른 통신을 위해 여러 세그먼트를 한꺼번에 주고 하나의 ACK를 받아 통신할 수 있는데, 이 때 수신 장비가 받을 수 있는 데이터의 양을 표시하여 효율적으로 데이터 통신이 일어날 수 있도록 흐름을 제어해주는 기능
TCP 3Way-Handshake
: Host A와 Host B가 통신을 하기 전에 가장 먼저 하는 일은 통신을 할 수 있는 상태인지를 체크하는 것이다.
사람이 만나서 용건을 얘기하기 전에 서로의 이름을 밝히고 악수부터 나누는 것처럼 TCP로 통신할 장비들도 데이터를 보내기 전에 3번에 걸쳐서 인사(통신확인)를 한다. 그걸 3Way-handshake라고 한다.
Host A가 Host B에게 먼저 통신이 되는지 물어본다.
Host A : 야, 너 내말 들려? (SYN)
//Send SYN - SYN flag를 1로 표시하고 랜덤한 숫자를 Sequence number필드에 넣어 전송한다
Host B는 이에대한 응답을 보내며 자신도 통신이 되는지 확인하는 값을 보낸다.
Host B : 응, 니말잘들려.(ACK)
내말은 잘들려?(SYN)
//Send SYN,ACK - SYN과 ACK flag를 1로 표시하고 전달받은 Seq값에 1을 더해 ACK값으로 넣고 랜덤한 숫자를 Sequence필드에 넣어 전송한다.
Host A는 Host B가 준 SYN에 응답해주고 서로 연결이 잘 되어있다는 것의 확인을 마친다.
Host A : 니말도 잘들려.(ACK)
//Send ACK - Host B에게 응답을 보낸다.
UDP (User Datagram Protocol)
: 신뢰성이 없는 대신 빠른속도로 통신되는 특징을 가진 통신방식이다.
소용량의 데이터를 전송해야 되는 데이터들은 TCP처럼 세션을 맺어 통신하면 너무 속도가 느려지고 비효율적이다. 이런 경우에는 UDP를 사용하여 통신하는 것이 좋다.
또한 음성이나 영상같이 속도에 민감하면서 데이터 재전송이 일어나면 안되는 데이터들도 UDP를 사용하는 것이 효율적이다. 만약 TCP를 사용하면 속도가 떨어져서 실시간으로 데이터 전달이 어려워지고, TCP처럼 손실된 데이터를 재전송하게 되면 음성이나 영상 데이터가 뒤죽박죽으로 뒤섞여 제대로 데이터를 받아볼 수 없을 것이다.
'[Network] Beginner' 카테고리의 다른 글
ICMP (Internet Control Message Protocol) (0) | 2014.12.08 |
---|---|
ARP (주소결정프로토콜) (5) | 2014.08.07 |
Wildcard-Mask (와일드카드 마스크) (6) | 2014.07.26 |
서브넷팅 (Subnetting) (5) | 2014.07.22 |
Subnet-Mask (서브넷 마스크) (0) | 2014.07.21 |