한 장으로 정리한 것은 다음과 같다.

데이터 단위는 4가지('Stream', 'Segment', 'Packet', 'Frame')로 정리한다.
우리에게는 Streaming이라는 말이 익숙하기에 의미상 알기 좋다.
끝 없이 나오는 데이터 즉, 끝을 모르는 데이터 단위이다.
App(Process)에서 File에 Write하는만큼 길이를 가지기 때문에 사이즈를 정할 수 없다.
사이즈가 정해져있다면 우리가 한글 프로그램과 같은 워드프로그램에 굉장히 긴 글을 적는 것이 매우 귀찮고 어려운 작업이 될 것이다.
하지만 우리는 한글 프로그램으로 hwp와 같은 파일을 만들어내는 것에 귀찮음을 전혀 느끼지 않는다.
이것이 바로 Stream과 같은 단위로 만들어지기 때문이다.
다 적고 보니 Segmant로 적어 놓은 곳이 있다..(허접한 영어 실력)
kernel mode에서는 TCP/IP라는 친구가 버티고 있다.
Stream 데이터를 적당하게 분할해주는 작업이 필요하다. 이를 Segmentation이라 한다.
Segmentation이 어떤 기준으로 나누는 걸까?
- MSS(Maximum Segment Size)를 기준으로 나눈다. 하나의 Segment는 당연히 MSS를 넘지 못한다.
- MSS는 어떻게 정하나?
Packet의 최대크기인 MTU(Maximum Transport Unit)에 따라 정한다.
보통 1500bytes 라고 한다.
Segment를 인터넷 환경에서 전송가능한 형태로 캡슐화(encapsulation)하면 Packet이 된다.
Packet을 실어나를 때는 또 다시 캡슐화(encapsulation)하여 Frame이 된다.