깊이 있는 이해를 위해 계층별 데이터 단위를 외워야한다.
크롬 브라우저가 인터넷으로 정보를 송수신하기 위해 소켓 인터페이스를 이용해 송수신 할 것이다. 이 때 데이터 단위를 따져보면 L1~L2 수준에서 구분하는 단위가 Frame 이다.
더불어 L3 IP 수준에서 논하는 단위는 Packet, L4 TCP에서 논하는 단위는 Segment이다. 여기까지는 OS 단이고, User mode application 단에서 socket 의 단위는 Stream 이다.
Stream의 특징으로는 시작은 있지만 끝이 언제인지 정의되어 있지 않다. 이는 어플리케이션 수준에서 정하기 때문이다. 데이터를 송수신하는 운영체제 입장에서 Stream은 연속적으로 이어진 크기를 정확히 알 수 없는 큰 데이터이다.
...
소켓이라는 인터페이스가 있으면 Stream을 wirte 하는데, 이 때 문제는 IP 계층이다. 데이터의 단위가 정해져 있으며 최대 크기가 MTU 약 1500 byte 이다. 뿐만 아니라 TCP 단에서도 Segment 단위의 크기는 MSS (Maximum Segment Size) 1460byte이다.
만약 Stream의 크기가 4MB이라면 Segment나 Packet이 가질 수 있는 최대 크기를 넘어간다. 이 경우 Stream을 잘라서 분할한다. 소켓에서 TCP로 타고 내려가는 지점에서 Segment화가 되는데 이를 Segmentation 즉 분할이 일어난다.
다시 말해 Stream이라는 연속적인 데이터를 MSS 단위로 자른다. 그리고 MTU 사이즈에 맞춰 인터넷 환경에 유통한다.
...
연관지어 외우자
소켓 + 스트림
TCP + 세그먼트 + MSS + 1460 byte
IP + 페킷 + MTU + 1500 byte
L1 / L2 + 프레임
스트림을 데이터 단위라 보기는 어렵다. 적어도 세그먼트는 되어야 하며, 스트림은 데이터 큰 덩어리 그 자체이다.
'네트워크' 카테고리의 다른 글
IPv4 Header 형식 (1) | 2024.10.14 |
---|---|
TCP/IP 송수신 구조 (1) | 2024.10.12 |
패킷의 생성, 전달, 소멸 과정 (1) | 2024.10.10 |
인캡슐레이션(Encapsulation)과 디캡슐레이션(Decapsulation) (0) | 2024.10.10 |
L3 패킷(Packet) 이란 (0) | 2024.10.10 |