영어공부에 있어 어렵지만 동시에 가장 중요하고 핵심적인 것이 단어 암기였다.
네트워크 데이터 단위 역시 그렇다. 앞으로의 본격적인 공부에 걸림돌이 되지 않도록 꼼꼼히 살펴보자!
🔦 본 포스트는 유튜브 널널한 개발자 강의를 기반으로 함을 알립니다.
네트워크 데이터 단위
![](https://velog.velcdn.com/images/oayenn/post/64a87ed1-3209-417d-8b2d-132764f437e8/image.png)
1. File
- 커널을 추상화한 인터페이스. socket이라고 한다.
파일은 운영체제가 지원하는 한, 길이가 한정 없이 늘어난다(그에 따라 메모리도 함께 늘어난다). File과 함께 연상할 수 있는 또다른 데이터의 단위가 있다. Stream이다.
2. Stream
- 실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름. 한 장치에서 다른 장치로 보내지는 모든 정보.
자바에서는 파일이나 콘솔의 입출력을 직접 다루지 않고, 스트림(stream)이라는 흐름을 통해 다룬다. 스트림은 시작은 있으나 언제 끝날지 모른다는 특징이 있다. 이는 Process, 즉 프로그램이 어떻게 개발되었느냐에 따라 다르다. 길이가 굉장히 길어질 수도 있다는 것! = IP 수준에서 논하는 단위보다 길어질 수도 있다.
3. Segment
- TCP에서 다루는 데이터 단위.
- 스트림으로부터 데이터를 받아들이고 이를 일정 단위로 분할한 뒤, TCP 헤더를 덧붙여 TCP segment를 생성한다. 이렇게 만들어진 TCP segment는 IP 데이터 그램에 캡슐화되어 상대방에게 보내지게 된다.
- 세그먼트 헤더와 실제 데이터로 구성되어 있다. 헤더 영역에는 어디서 보내는지, 어디로 보내는지, 몇번째인지 등의 정보들이 담긴다.
![](https://velog.velcdn.com/images/oayenn/post/40a2fe9e-1743-45a5-8d6d-4b90ad151410/image.png)
📢 하단의 Data 영역을 제외한 모든 부분이 헤더 영역이다.
4. Packet
- IP에서 다루는 데이터 단위
- 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록
5. Frame
- Driver, H/W(L2)에서 다루는 데이터 단위
💭 중간 정리
user mode의 application process가 file
에 stream
data를 write한다.
user mode에서 kernel mode로 내려가 TCP를 만나면 stream data는 segment
화 된다. = segmentation
(분해, 자르기)
이 때 일정 길이로 자른다는 것이 중요한데, 이 길이에는 MSS
라고 하는 최대 크기가 있다.
6. MSS
- maximum segment size.
- MSS는 패킷의 크기에 기초해 만들어진다. 이 때, 패킷의 최대 크기가 있다.
MTU
(Maximum Transport Unit, 최대 전송 크기)라고 한다.
7. MTU
- Maximum Transport Unit.
- MTU는 특별한 경우가 아니라면 1500 byte이다. 즉 1.5KB로, 매우 작은 수준이다.
- 1.5MB 정도의 데이터를 네트워크(인터넷)으로 보낸다면 적어도 천 여개의 packet이 나온다. (1.5MB == 1500KB)
- packet은 frame으로 또다시
encapsulation
(캡슐화) 된다.
💭 최종 정리
- socket 수준 데이터 단위 : stream
- TCP 데이터 단위 : segment
- IP 데이터 단위 : packet
user mode-application-process 수준, 즉 socket 수준에서의 데이터 단위는 stream
data이다. stream data란 그 끝을 알 수 없이 일렬로 쭉 늘어선 데이터이다. 데이터를 네트워크로 보내기 위해서는 분해가 일어나는데, 이를 segmentation
이라 한다. 그렇게 잘린 조각 하나하나를 segment
라 하고, 이것을 인터넷 환경에서 전송가능한 형태로 포장한 것을 packet
이라 한다.
packet의 최대 크기는 1500 byte에 불과하다. MSS는 1500 byte보다 작다. packet을 실어나를 때는 다시 frame
data에 넣는다.
개념 정리
✍🏻 IP 데이터그램
- 데이터그램이란 인터넷을 통해 전달되는 정보의 기본 단위이다.
- IP는 각기 개별적으로 전송되는
데이터그램
이라는 패킷 형태로 데이터를 전송한다.
Reference
https://youtu.be/p6ASAAMwgd8
https://luv-n-interest.tistory.com/1033
https://velog.io/@nnnyeong/Network-Segment-%EC%84%B8%EA%B7%B8%EB%A8%BC%ED%8A%B8
http://www.tcpschool.com/java/java_io_stream
http://itnovice1.blogspot.com/2019/08/ip.html