강의 영상
https://www.youtube.com/watch?v=_i8O_o2ozlE&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=9&t=1s
목차
- IPv4 프로토콜
- ICMP 프로토콜
- 라우팅 테이블
- 다른 네트워크와 통신과정
- IPv4의 조각화
- 실습
IPv4 프로토콜
IPv4가 하는 일
- 네트워크 상에서 데이터를 교환하기 위한 프로토콜
- 데이터가 정확하게 전달될 것을 보장하지 않음
- 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 수도 있다. (악의적으로 이용하면 DoS 공격이 됨)
- 데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서 보장
IPv4 구조

- Identification: Packet을 쪼개서 보낼 때, 원래 하나의 Packet이었다는 것을 파악 가능
- Framentation Offset: 쪼개진 Packet의 순서를 알려줌 (시작점부터 얼만큼 떨어져있는지 알려줌)
- Time To Live (TTL): Packet이 무한 루프로 도는 것을 방지 (장비를 하나씩 지날 때마다 1씩 감소) -> TTL이 0인 장비는 해당 Packet을 버림
- Protocol: 상위 프로토콜을 알려줌
- ICMP: 0 1로 세팅
- TCP: 0 6으로 세팅
- UDP: 1 1로 세팅 (17)
- Header Checksum: 헤더의 오류여부 점검
ICMP 프로토콜
강의영상
https://www.youtube.com/watch?v=JaBCIUsFE74&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=10
ICMP 프로토콜이 하는 일
- ICMP (Internet Control Message Protocol)
- 네트워크 컴퓨터의 운영체제에서 오류메시지를 전송받는데 주로 쓰인다.
- 프로토콜 구조의 Type과 Code를 통해 오류 메시지를 전송받는다.
ICMP 의 구조
- Type: 대분류
- Code: 소분류
- Type 0,3,8,5,11은 알아야 함
- 0, 8: 기본: 8 = 요청, 0 = 응답
- 3 = Destination Unreachable, 11: Time Exceeded => 왜 통신이 안되는지 파악 가능
- 3: 목적지까지 가지 못함 ex. 중간에 경로 설정 잘못됐을 때
- 11: 목적지까지 갔는데 오지 못함 ex. 상대가 방화벽 켜 놨을 때
- 5: Redirect 보안상 중요
IPv4, ICMP 프로토콜 실습
강의 영상
https://www.youtube.com/watch?v=8ZwTvTuZlVw&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=11
* 내가 보내는 이더넷 프로토콜과 구글이 받는 이더넷 프로토콜은 다르다 (네트워크 대역이 달라서)
라우팅 테이블
강의영상
https://www.youtube.com/watch?v=CjnKNIyREHA&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=12
어디로 보내야 하는지 설정되 있는 라우팅 테이블
(패킷을 보낼 때 참고하는 지도가 된다)
- 게이트웨이
- 모르면 일단 저기로 보내라
다른 네트워크와 통신 과정
- A -> B가 (통신) 가능하려면, B의 네트워크 대역이 A의 라우팅 테이블에 있어야 한다




*Ethernet 프로토콜은 네트워크 대역이 바뀔 때마다 다시 작성됨
IPv4의 조각화
조각화란?
- 큰 IP 패킷들이 작은 MTU를 갖는 링크를 통하여 전송되려면 여러 개의 작은 패킷으로 쪼개어(조각화)되어 전송돼야 한다.
- 즉 목적지까지 패킷을 전달하는 과정에 통과하는 각 라우터마다 전송에 적합한 프레임으로 변환이 필요하다.
- 일단 조각화되면, 최종 목적지에 도달할 때까지 재조립되지 않는 것이 일반적이다.
- IPv4에서는 발신지뿐만 아니라 중간 라우터에서도 IP 조각화가 가능
- IPv6에서는 IP 단편화가 발신지에서만 가능
- 재조립은 항상 최종 수신지에서만 가능함
조각화 예시

- MF (More Fragmentation): 내 뒤에 조각이 더 있다 - 맨 마지막 조각은 0
- Offset: 0으로부터 얼마나 떨어져있는지 (Byte단위)
큰 데이터를 조각화해서 보내는 예시


- 05 dc, 02 24: Data 길이
- 12 ab: 패킷의 ID값
- 2 0 : MF (More Fragmentation)
- 0 00, 0 b9: Offset
조각화 실습1
보내려는 데이터 크기: 2379
MTU: 980
- 몇 개의 패킷으로 쪼개지는가?
3
- 첫번째 패킷의 데이터 크기는 몇인가?
960
- 마지막 패킷의 데이터 크기는 몇인가?
459
조각화 실습2
명렁어 ping [ip 주소] -l 4800
보내려는 데이터 크기: 4800
MTU: 1500
1514 = 14 (Ethrnet) + 20 (IPv4) + 1480 (Data)
마지막 조각 = 402 = 14 (Ethernet) + 20 (IPv4) + 8 (ICMP) + 360 (Data)
'Computer Science > Network' 카테고리의 다른 글
[따라學IT] 08. 비연결지향형 UDP 프로토콜 - 이론 (0) | 2022.07.24 |
---|---|
[따라學IT] 07. 컴퓨터의 프로그램끼리는 이렇게 데이터를 주고 받는다 - 4계층 이론 (0) | 2022.07.17 |
[따라學IT] 05. 통신하기 전 반드시 필요한 ARP 프로토콜 - 이론 (0) | 2022.07.09 |
[따라學IT] 04. 실제로 컴퓨터끼리는 IP주소를 사용해 데이터를 주고받는다 (0) | 2022.06.29 |
[따라學IT] 03. 가까이 있는 컴퓨터끼리는 이렇게 데이터를 주고받는다 (0) | 2022.06.26 |