이 포스트는 널널한 개발자님 강의를 참조하여 작성한 포스트입니다.
크롬 브라우저라는 프로세스가 인터넷으로 정보를 송수신하려면 socket이라는 인터페이스를 통해 data를 송수신한다. 근데 이때 data의 단위에 대해 따져보면 L1~L2계층 수준의 단위는 Frame이고 L3는 Packet, L4는 Segment이다.
Socket에는 Stream이라는 것이 있는데 Stream의 특징은 시작은 있는데 끝의 정의를 내릴 수 없다. 이 끝의 정의는 user-mode application proccess 수준에서 정의하기 때문에 데이터 송수신을 하는 OS 입장에서 strream은 연속적으로 이어진 크기를 알 수 없는 큰 데이터이다. socket에 stream이 write를 하는 과정에 문제가 있는데 만약 stream의 크기가 4MB라고 하면 이게 socket을 타고 내려가 TCP를 만날때 세그먼트화하는 과정에 데이터를 Segment 최대 크기인 MSS에 맞게 분할을 한다. 그리고 이 분할된 것을 IP로 내려가 MTU 사이즈에 맞춰서 전달을 한다.