뭉게뭉게 엔지니어
L4 - Transport Layer 본문
Transport 계층은
port주소를 지정하여 서비스를 구분할 수 있게 해주고, 데이터의 전송 방식을 결정한다.
필요에 따라 단편화 작업을 수행한다.
1) 주소: Port Address
2) Protocol : TCP, UDP
3) 장비 : L4 Switch
**장비는 일반적으로 하위계층의 기능을 포함한다.
1) Port Address 란
Application 구분을 위해 필요한 것으로, 시스템 내부의 프로세스 또는 프로그램 식별을 위해 사용하는 식별 값이다.
프로그램 설계 시 사용할 Port 주소가 지정되며, 이는 IANA에서 관리한다.
- 2byte(16bit) 크기의 10진수 한 자리로 표기한다.
- port주소의 총 개수는 2^16(=65536)개이다. 즉, 0번부터 65535번까지!
- 이는 사용 목적에 따라 3가지로 분류된다.
① Well Known Service Port(0~1023) : 잘 알려진 서비스 프로그램용으로 예약된 주소
※암기해야하는 주요 포트 번호※
ftp 21,20* | dns 53 | pop3 110 |
ssh 22 | dhcp 68,67** | imap4 143 |
telnet 23 | tftp 69 | ssl 443 |
smtp 25 | http 80 | rdp 3389*** |
* 21이 20에 우선한다.
**68과 67은 동일하다.
***well known service port는 아니지만 외워두는 것이 좋다.
② Registered Port(1024~49151) : Online용으로 개발된 프로그램의 네트워크 통신을 위해 할당하는 주소
③ Dynamic Port(49152~65535) : 등록하지 않고 임의로 사용할 수 있는 주소
2-1) Protocol_TCP (Transmission Control Protocol)
TCP는 데이터 전달의 신뢰성을 최대한 보장하는 것으로, 아래와 같은 특성을 가진다.
① Connection Oriented (연결 지향) : 데이터를 전달할 논리적인 연결을 먼저 구성하며, 이를 3way Handshake라 한다.
※ 3way Handshake (연결 설정) ➡ 데이터 전송 ➡ 4way Handshake(연결 종료)
3way Handshake - TCP 통신 전 미리 연결을 설정하는 것으로, 상호간의 연결을 통해 신뢰성을 보장하기 위한 기법임. - 정상 통신이 가능하면 논리적인 양방향 연결을 맺은 후 Segment를 전송함. ![]() |
② Reliability (신뢰성 보장) : 순차적으로 데이터를 전송하고 확인응답 및 재전송을 실행함.
※ 송신 (Sequence Number) ➡ 응답 (Acknowledgement Number)
③ Flow Control (흐름 제어) : 데이터 전달에 지연 현상 발생 시 데이터의 양을 조절함(Sliding Window).
④ TCP는 Header가 길어 많은 정보를 담을 수 있기에 정확한 데이터 전달이 필요한 대부분의 서비스에 사용된다.
⑤ Full-Duplex, P2P(Point to Point) 방식
그렇다면 TCP Header는 얼마나 많은 정보를 담고 있는지 알아보자
TCP Header
![]() ▷ Destination Port Address : 목적지 포트 번호 ▷ Sequence Number (seq no) : 순서화된 일련번호로, 초기 순서 번호는 임의로 설정함. 전송되는 데이터의 크기를 누적시키며 순서를 알려줌. ▷ Acknowledgment Number (ack no) : 확인 응답 번호로, 데이터를 정상수신하면 예상하는 다음 Seq no를 알려줌. ▷ Data offset : 4개의 bit로 표현되고(0000~1111), 4byte단위로 표시되어 최대길이는 60byte(15x4). ▷ Reserved : 예약된 field로 TCP Flags의 앞에 붙어 나와 0으로 표시되어 크게 신경쓰지 않아도 되는 필드. ▷ TCP Flags : 논리적인 TCP 연결회선 제어 및 데이터 관리를 위해 사용함. TCP메시지의 종류를 명시함(어디에, 어떻게 쓰이는가). ![]() ▷ Window : 통신의 상대에게 자신의 버퍼 여유용량의 크기를 지속적으로 알려주며, 능동적인 흐름제어를 위해 사용됨. ▷ Checksum : Pseudo Header를 구성하여 데이터를 내보낼 때에 오류 검출을 실행함. ▷ Urgent Pointer : TCP Flags의 U에 1이 뜨면 바로 작동함. |
이러한 TCP의 확인 응답은 세가지 유형으로 나뉜다.
① 일반 확인 응답 (Segment : ACK = 1: 1)
- 출발지에서 Segment가 전달되면 반드시 목적지에서 전달 받았음을 확인함.
- 확인응답을 받아야지만 다음 데이터를 전달할 수 있음.
② 누적 확인 응답 (Segment : ACK = N : 1)
- TCP 연결 설정을 통해 한번에 보낼 수 있는 Segment의 양을 약속함.
- 출발지에서는 목적지 확인 응답이 없어도 지정된 양에 해당하는 Segment를 계속 전달함.
- 목적지에서는 지정된 양의 Segment를 전달 받았을 때 하나의 확인 응답을 전달함.
- 중간에 손실된 Segment 발생 시 정상적으로 전달받은 Segment까지 재전송 해야함.
③ 선택적 확인 응답
- 누적 확인 응답의 문제점을 해결하기 위한 방식.
- 확인 응답을 할 때 재전송이 필요없는 Segment의 정보를 알림으로써 불필요한 재전송을 방지함.
<TCP 상태 천이 다이어그램>
2-2) Protocol_UDP (User Datagram Protocol)
UDP는 간단하게 말하면 TCP와 반대라고 생각하면 된다. 이를 기반으로 특성을 정리하면 아래와 같다.
① Connectionless (비 연결 지향)
② Unreliability (비 신뢰성)
③ 최소화된 Header : 데이터의 빠른 전달 보장 ex)실시간 통신, 음성 서비스 등
④ 데이터 그램 형식
⑤ 수신여부를 확인하지 않으며 전송 순서가 바뀔 수 있음.
UDP Header
'☁ 네트워크 기초 따라가기 > OSI 7 & TCP IP' 카테고리의 다른 글
Network model 정리본! (0) | 2022.07.16 |
---|---|
L3 - ARP와 ICMP (0) | 2022.06.20 |
L3 - Network / Internet (0) | 2022.06.20 |
L2 - Data Link / Network Interface(Network Access) (0) | 2022.06.20 |
L1 - Physical / Hardware (0) | 2022.06.20 |