티스토리 뷰
L3 - 1. IPv4의 구조, Packet, Encapsulation/Decapsulation, 데이터 단위
dev_jun 2022. 10. 22. 20:06IPv4주소의 구조
IP주소란 무엇인가? 기본적으로 host에 대한 식별자이다. IP(인터넷 프로토콜)를 사용하는 인터넷망에서 인터넷에 연결된 컴퓨터 한 대를 식별하기 위해 부여하는 고유 번호이다.
Network 계층인 L3 계층의 IP는 IPv4로 가정했을 때, 32bit 주소 체계를 갖는다. 32bit = 8bit * 4이다. 8bit는 2^8 이며 총 256가지(0~255)의 경우의 수를 가진다. 이때, 255는 11111111이므로 이는 broadcast일 수 있음을 고민해야한다.
32bit 주소 체계를 어떤 구성에 따라 쪼개서 관리를 하는데, 이 구성은 다음과 같다.
![[IPv4 구성.png]]
.
으로 구분되는 하나의 숫자 단위는 8bit이기 때문에 0~255까지의 숫자 범위를 갖는다. IP주소는 기본적으로 총 32bit 중 24bit를 잘라서 이를 Network ID
로 구분짓고, 마지막 8bit를 Host ID
라고 구분짓는다. 이를 우리 실생활에 빗대어 이해하면 서울시 강남구 역삼동 ~번지라는 주소가 있을 때, 읍면동까지의 주소가 Network ID가 되고 마지막 번지수가 Host ID가 되는 격이다.
L3 Packet
packet은 기본적으로 단위 데이터를 뜻한다. 하나의 택배 박스라고 생각하면 이해가 수월하다.
- Packet이라는 말은 L3 IP Packet으로 생각하자.
- 보통 packet이라고만 하지만 이렇게 생각하는 이유는 IP는 L3 계층이기 때문에 packet이라는 단어만 봐도 L3 IP라는 단어가 연관 검색어처럼 떠올라야 하기 때문이다.
- Header와 Payload로 나뉘며 이는 상대적인 분류이다.
- Header - Src(Source) -> Dst(Destination)으로 구성된다.
- Payload - Header가 실어 나르는 내용이다. 택배의 내용물이라고 생각하자.
- 최대 크기는 MTU(Maximum Trasmission Unit).
- Header + Payload = MTU
- 특별한 이유가 없다면 이 크기는 최대 1500Bytes(약 1.4KB)이다.
Encapsulation과 Decapsulation
가장 외벽의 경우 L2를 의미한다. L2의 Payload에는 또 다른 Header와 Payload가 존재한다. 이 첫번째 내부의 Header는 L3이며, payload는 IP이다. 그 내부는 L4와 TCP에 대한 정보가 담긴다. 이렇게 각 계층에 대한 정보가 캡슐화되어 저장된다.
Encapsulation(캡슐화)
- 택배의 경우 박스를 구해와서 박스 안에 내용물을 넣은 후 포장을 한다. 이 과정이 결국 Encapsulation이다.
- 박스에 내용물을 넣음으로써 어떤 단위화되었다. (이 경우 박스 단위로 바뀌었다.)
- 박스에 내용물을 넣으면 안의 내용물을 알 수 없다. 이러한 특징으로 보안적인 의미도 가진다.
- 이를 네트워크 방식으로 보면 다음과 같다.
Decapsulation
- Encapsulation의 캡슐 하나를 벗긴 것.
패킷의 생성과 전달
어느 process가 인터넷을 통해 어떤 data를 송신해야 한다면 data를 packet으로 생성하여 gateway에게 준다. gateway는 분류 체계에 의해 routing을 하고, IPv4의 Destination으로 전달한 후 Port 번호에 packet을 전달한다.
어떤 Data가 있다고 가정할 때, 이 데이터를 TCP Socket에 Write(Send)한다. 이제 Data가 하위 계층으로 내려가며 TCP를 만나게 되면 TCP(Header) + Data(Payload) 의 덩어리가 되는데 이 한 덩어리를 Segment
라고 부른다. 이 Segment가 한 층 또 내려가면 앞단에 IP Header가 추가적으로 붙게되고, 한 계층 더 내려가면 Ethernet Frame Header가 붙는 것이다. 이 Ethernet Frame채로 타고 나가서 L2 Access Switch 등을 만난 후 Route Gateway를 만나 Internet망으로 나가게 되는 것이다.
계층별 데이터 단위
- User mode - Stream
- 연속적으로 어이진 크기를 정확히 알 수 없는 큰 데이터. 이 Stream을 Socket에 Write하는 것.
- Kernel mode 단위
- TCP - Segment
- 최대 단위 - MSS(Maximum Segment Size)
- 1460Bytes
- IP - Packet
- 최대 단위 - MTU(Maximum Transmission Unit)
- 1500Bytes
- TCP - Segment
- L1 ~ L2 수준의 단위 - Frame
Segment, Packet의 최대 단위는 약 1500Bytes 수준이다. 하지만 Stream에서 전송하려는 데이터의 크기가 4MB라고 한다면 처리할 수 있는 최대 단위의 용량을 넘어선다. 이럴 경우 TCP와 맞닿는 지점에서 분할이 이루어지는데 이를 Segmentation이라고 한다.
즉, Stream이라고 하는 연속적으로 긴 데이터를 MSS 크기로 자른 후 이를 MTU 사이즈에 맞춰서 인터넷이라는 환경에서 유통하는 구조이다.
'Computer science > 네트워크' 카테고리의 다른 글
L3 - 4. TTL과 단편화, DHCP, ARP, Ping과 RTT (0) | 2022.10.25 |
---|---|
L3 - 3. IP 헤더 형식, 서브넷 마스크와 CIDR, Brodcast IP 주소, Host 자신을 가르키는 IP 주소 (0) | 2022.10.24 |
L3 - 2. TCP/IP 송수신 구조 (0) | 2022.10.23 |
OSI 7 Layer의 식별자, Host, Switch (0) | 2022.10.20 |
User mode와 Kernel mode (0) | 2022.10.19 |
- Total
- Today
- Yesterday
- BOJ
- Hadoop
- 네트워크
- DP
- GROK
- DFS
- 이코테
- mahout
- 프로그래머스
- 빅데이터를지탱하는기술
- Algorithm
- 빅데이터
- CS
- HDFS
- Python
- Elasticsearch
- logstash
- cka
- elasticsaerch
- kubernetes
- OS
- Espher
- sqoop
- CSAPP
- 파이썬
- kafka
- oozie
- Flutter
- 백준
- heapq
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |