데이터 단위

* socket: TCP라는 요소가 user mode application Process에 접근할 수 있도록 추상화한 인터페이스, 본질 = file
- 모든 프로그램은 이 파일에 대고 Read나 Write를 한다.
Socket 수준에서의 데이터 단위
- Stream
- 시작은 있지만 언제 끝날지 모르는 쭉 늘어진 데이터
( 개발자 마음)
- socket과 TCP가 만나는 지점에서 분해가 일어난다
= Stream 데이터를 일정 단위로 자름
TCP 수준에서의 데이터 단위
- Segment
Segment가 Encapsulation되면
- Packet
Packet이 Encapsulation 되면
- Frame
- Ethernet 네트워크면 Ethernet Frame

User mode 프로그램을 개발
→ socket 프로그래밍을 통해서 (Java, C, C++ ...)
Segment
이때 Stream 데이터를 네트워크에 보낸다고 send를 누르면 분해가 일어난다
- 택배에 들어 있는 내용물 (아래 설명 참고)
Packet
- 최대 길이(MTU): 1500bytes
- header와 payload로 나뉨
header
- header는 다시 IP헤더와 TCP헤더로 나뉨
- 왼쪽에서 오른쪽으로 갈 수록 레이어가 올라간다
- 특별한 이유가 없다면 보통 20bytes
payload
- 1460bytes
- 특별한 이유가 없다면 이것이 MSS
- Stream 데이터에서 1460bytes씩 나눠서 payload에 넣고 그 앞에 header를 붙임
- segment가 payload로 감
택배
- 택배 상자 = packet
- 송장 = header
- payload를 실어나르기 위한 정보들(meta data 등,,)
- 택배의 송장은 어쩔 수 없이 노출된다. 해당 정보를 읽어야 배달을 할 수 있기 때문
DPI
- 보안 등의 이유로 packet을 조사할 수도 있다
- 조사할 때 payload 안을 들여다 봄, 이것이 DPI
- Deep Packet Inspection
- 이걸 들여다 보는 순간 도감청(?), 조심해야해!
Encapsulation

- Segment는 내용물
- 물건을 감싸서 상자 안에 넣는 것
Packet 생성 정리
- process가 socket에다 대고 I/O를 시도하면
- 이 때 메모리에 저장된 stream 형식의 기다란 데이터를 일정 단위로 끊어 segment화 한 후에
- Packet 형식으로 Encapsulation 해서 생성
- socket에서 무언가 데이터를 보낼 때의 함수 이름 = send
- send("~~~~~");
- send 시 2,000bytes를 보냈다면 패킷이 적어도 2개 감
- MTU가 1,500이기 때문에
- 하나의 패킷의 payload로 보낼 수는 없다
Frame

- 택배를 실어나를 때 '트럭'에 택배 넣음
- 이것도 Encapuslation
- segment(L4): 내용물
- packet(L3): 택배(상자)
- header: 송장
- payload: 내용물
- truck: Frame(L2)
출처: https://youtu.be/Bz-K-DPfioE?si=4y1bh1wkIazubXpV
'백엔드 > 네트워크' 카테고리의 다른 글
[네트워크기초이론]#16. IP헤더 형식과 의미 요약 (0) | 2023.09.27 |
---|---|
[네트워크기초이론]#15. L2 스위치에 대해서 (0) | 2023.09.26 |
[네트워크기초이론]#13. LAN과 WAN을 구별하는 방법 (0) | 2023.09.25 |
[네트워크기초이론]#11. 웹 서비스 3대 요소 (0) | 2023.09.20 |
[네트워크기초이론] 초창기 웹 서비스 구조 (0) | 2023.09.20 |