티스토리 뷰
위 두 그림에 대해서 미리 알고 있으면 좋다.
IPv4 헤더의 각 필드별 소개
- VER: 인터넷 프로토콜의 버전을 의미한다. IPv4, IPv5, IPv6 등의 버전이 들어갈 수 있다.
- HLEN: 헤더의 길이이다.
- 헤더의 길이는 최소 20바이트부터 최대 60바이트의 크기를 가지기에 0부터 15까지의 수를 표현할 수 있는 4비트를 가지고 60바이트까지 표현하기 위해서 4를 곱한다.
- IPv6에서는 헤더의 크기가 항상 320바이트이기에 이 필드가 없다.
- Service type: IP 데이터그램의 서비스 형태를 알린다.이 필드를 통해 이 패킷이 얼마나 중요하고 긴급한 것인지를 알 수 있기에 QoS(Quality of Service)를 구현할 수 있다.
- DSCP(6bit): 서비스 유형을 의미하는 필드
- ECN(2bit): 경로의 혼잡 정보를 담는 필드, 지금은 쓰지 않는 필드
- Total length: 헤더의 크기까지 포함한 IP데이터그램의 크기를 의미한다.
- Identification: IP 데이터그램을 구분하기 위해서 쓴다.
- 예를 들어 IP 데이터그램이 단편화(fragmentation)되었을 때 단편화된 데이터그램이 원래 어떤 데이터그램에 속해 있는 지를 알 수 있다.
- IPv6에서는 라우터가 패킷을 단편화하지 않기 때문에 이 필드는 삭제되었다.
- Flags: IP 데이터그램이 단편화됬는지를 나타내는 필드이다.
- Fragmentation offset: 단편화된 데이터그램의 순서를 나타낸다.
- Time to live(TTL): 패킷이 라우터를 거칠 때마다 이 필드의 값이 1씩 감소되며 0이 되면 버려진다.
- Protocol: IP 데이터그램의 데이터(페이로드)에 담겨져 있는 상위 계층의 프로토콜을 알려준다
- Header checksum: Header 필드의 오류를 검출할 수 있는 정보가 담긴 필드이다.
- Source IP address: 패킷을 보낸 노드의 IP 주소가 담긴다.
- Destination IP address: 목적지의 IP 주소가 담긴다.
네트워크 통신에서는 전송할 데이터가 한번에 보낼 수 있는 단위를 벗어났을 때 데이터를 여러개의 패킷으로 분할(단편화)하여 보낸다.
🎈 IPv4 패킷 헤더가 실제로 어떻게 찍히는지 알아보기 위하여 WireShark 를 통하여 간단한 실험을 해보았다.
아래는 3000 byte 를 구글 IP 8.8.8.8 에 전송한 사진이다.
이런 식으로 찍히는 것을 확인할 수있다 (자세한 링크)
① Frame 해석기, ② Ethernet 해석기, ③ IPv4 해석기 이외에 ④ TCP 해석기, ⑤ HTTP 해석기 등이 있다고 한다.
Preamble과 FCS 는 WireShark에 찍히지 않는다
두 사진을 비교하니 실제로 그대로 찍히는 모습을 볼 수 있다. 🎉🎉
더 재밌는 것은 전송할 데이터를 여러개의 패킷으로 분할하여 보낸 것을 볼 수 있다.
식별자는 60270으로 같지만 Fragment Offset으로 순서가 구분됨.
Flags - 3BIT
- Bit 0 - 예약됨 0으로 설정
- Bit 1 - 단편화 비트가 아님 (0= 단편화 , 1=단편화가 아님)
- Bit 2 - 더 단편화된 비트 (0=마지막 조각 , 1= 전송될 조각이 더있음)
Fragment Offset
각 프래그먼트의 원 데이터의 위치를 바이트 단위로 나타냄
반응형
'인프라 > Network' 카테고리의 다른 글
[Network] Handshake 문제 풀어보기 (3) | 2022.01.07 |
---|---|
[Network] TCP 3Way Handshake & 4Way Handshake 란? (0) | 2022.01.07 |
[Network] 네트워크를 효율적으로 관리하기 - 서브넷팅 & 슈퍼넷팅 (0) | 2022.01.06 |
[Network] 라우팅 프로토콜 - RIP,OSPF (0) | 2022.01.05 |
[Network] TCP/IP 모델 간단정리 (0) | 2022.01.05 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 라우팅
- rds
- spring
- 회고
- 네트워크
- osi7계층
- 라우터
- java
- 개발
- 초보
- Docker
- s3
- Spring Boot
- .NET
- 자바
- 프로토콜
- 계층
- 3Way Handshake
- dto
- 프로그래머스
- ec2
- 스위치
- aws
- tcp
- 회고록
- 삽질
- SpringBoot
- lambda
- 개발자
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함