출처 : https://www.youtube.com/watch?v=_i8O_o2ozlE&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=9
'따라하면서 배우는 IT' 강의를 보고 실습을 해보며 정리한 내용입니다.
총 20byte 인데+ option이 붙으면 + 4byte ..8 byte.. 12byte 등등 옵션이 하나 붙을때마다 += 4byte ( 최대 10개 = 40byte)
보통은 옵션 없이 보내는게 일반적.
- version = 4 이진수로 -> (0100) => ipv4 라서 4 / ipv6 은 아예 다르다 (신경 X )
- IHL( ip Header length ) : 4bit로 IP 헤더의 길이를 표현하려고하는데 4비트 최대 범위는 0 ~ 15, 근데 IP 프로토콜의 최소 길이기 20 , 최대 길이가 60 ( 옵션 10개 붙었을때 ) 인데 여기에는 다 못들어간다.
그래서 / 4 ( 4로 나눈 값) 한 값이 들어간다.
=> 5 ~ 15 ( 0101 ~ 1111 )
일반적으로 5 가 들어간다고 보면 된다. ( 옵션 안붙은거 )
- TOS : 옛날에 쓰던 값인데 지금은 쓰이지 않는다 . ( 서비스의 형식 ) 그래서 지금은 0 으로 비워져 있다.
- Total Length : 상위 계층부터 인캡슐레이션 되서 내려져온 전체 길이
- Identification , IP Flags , Fragment offset 은 하나의 셋트라고 보면 된다.
패킷이 여러개로 짤려서 오니 쪼개진 패킷을 알아볼 수 있게 하는 값 들.
Identification : A 패킷에서 짤린놈, B 패킷에서 짤린놈 등등 구별 할 수 있는것. ( ID )
IP Flags : 패킷 조각화를 할건지 안할건지 최대 1500바이트인데
ex ) ping xxx.xxx.xxx.xxx - 7000 -f : 7000바이트를 조각화 하지 않고 보낸다는건데 이러면 전송되지 않는다.
그래서 그냥 M 정도만 사용된다고 보면 된다. More packet ( 1이면 뒤에 패킷이 더 있다. , 0이면 없다.)
- fragment offset : 13 bit : 패킷을 복구할 수 있어야되는데 복구 할때 필요한 조각화의 순서 ( offset )
- TTL : window : 128 ( 기본 값) / 리눅스 : 64 => 3계층 장비를 넘어갈때마다 1씩 준다.
그래서 상대방 컴퓨터의 운영체제를 알 수 있다.
- Protocol : 상위 프로토콜, 우리가 볼 IP 프로토콜의 상위 프로토콜은 다음 세개 밖에 없을 것이다.
Icmp 01 / TCP 06 / UDP 17 ( 16진수로 11 )
- Header Checksum : 헤더가 맞느지 확인하는건데 우리가 직접 계산해볼 필요는 없다.
- Source Address : 출발지 IP 주소
- Dest Address : 목적지 IP 주소
- Type : 아래 표가 타입인데 0(응답), 8(요청), 3, 5 ,11 번 정도만 알면 된다.
8번이 요청 / 0번이 응답
3 번이면 보통 목적지까지 가지를 못한거고 ( 대표적으로 라우터 등등 경로상의 문제가 생겼을때 )
11 번은 목적지 까지 갔는데 응답을 못받은거다. ( 대표적으로 상대방이 방화벽 켜놨을때)
5번은 ICMP redirect라고 해서 옛날에 쓰던거 ( 보안 관련 )
- Code : 몰라도 된다.
- Checksum : 헤더에 오류가 있는지 없는지 나타내는거.
[ 실습 ]
ping 으로 기본 게이트웨이랑 통신하면 ICMP 프로토콜로 통신한다는것을 알 수 있다.
ICMP 는 8바이트라고 했는데 왜케 긴가 봤더니 abcd.. 등등 의미없는 값으로 채워서 32byte를 보냈다 ( 의미는 없다.)
타입이 08 ( 요청) ( 응답은 01 이다. 3은 dest unreachable, 5는 time exceded) 인것만 확인하자.
내가 게이트웨이에 요청했으니깐 08(echo) 이다.
다음은 IPV4 이다.
버전이니깐 16진수로 4라고 쓴거다.
다음에 헤더길이 20byte 인데 나누기 4해서 쓰니깐 5
TOS 는 안써서 이름이 다른걸로 바꼈는데 안쓴다. 그냥 0으로 채운다. ( 1 byte ) 0x00
Total Lenght : payLoad 까지 합친 길이 ( abcd.. ( 32byte ) + ICPM 8byte + 자신까지 Header( 20byte ) = 60 byte 0x00 3C )
identification : 조각화가 나야 의미가 있다. ( 다른 패킷들이랑 비교해보면 ID 값이 전부 다를것이다 . )
Flag : 조각화가 됬나 안됐나 알려주는 값
지금은 큰 데이터를 보낸게 아니니깐 조각화 안됐으니깐 모두 0
TTL - window 는 128 => 내가 보낸거니깐 네트워크 장비 아무것도 안돌아다녔으니깐 128 그대로
Protocol : ICMP 니깐 0x01 ( * TCP = 6 / UDP = 17 인데 16진수로 0x11 )
제일 중요한 부분은 다른 네트워크 대역이랑 통신을 할 때 이다.
내가 보내는 패킷의 이더넷 프로토콜이랑 구글이 받는 패킷의 이더넷 프로토콜은 다르다.
IP 프로토콜은 일치한다.
'네트워크 > Network 실습' 카테고리의 다른 글
07. Client - Server 개념 (0) | 2022.05.25 |
---|---|
06. IPv4 의 조각화 ∨ (0) | 2022.05.24 |
06. 라우팅 테이블 및 전송 과정 ∨ (0) | 2022.05.24 |
04. IP 주소 체계 & ARP 프로토콜 ∨ (0) | 2022.05.08 |
03. Ethernet 프로토콜 ∨ (0) | 2022.04.28 |