일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- webhacking
- Spring
- webhacking.kr
- BOF
- 운영체제
- pwnable
- stack overflow
- PWN
- SQL
- 웹해킹
- 네트워크
- Spring MVC
- OS
- Shell code
- Spring Framework
- 정보처리기사 실기
- 정보보안기사 실기
- 해킹
- Payload
- Pwnable.kr
- Lord of BOF
- wargame
- System
- hacking
- Operating System
- 워게임
- system hacking
- 정보보안기사
- Buffer Overflow
- LOB
- Today
- Total
DongDD's IT
Internet Protocol Version4(IPv4) - Checksum, IP Package, Module 본문
Internet Protocol Version4(IPv4)
CheckSum
- TCP/IP 에서 error를 detect하기 위해 사용하는 방법
- Sender가 Header의 모든 값을 다 더해 보수를 취해서 checksum을 만듬
- Receiver는 모두 더한 후 보수를 취한 값이 0이면 제대로 도착, 아닐 경우 버림
Sender Receiver
IP Package, Module
- IP에서는 효율적으로 관리하기 위해 여러 가지 모듈을 나누어 사용
1) 빨간색 선
- Receiver쪽에서 Packet을 받을 때 거치는 모듈
- Processing Module -> Reassembly module -> upper-layer
2) 파란색 선
- Sender쪽에서 Packet을 전송할 때 거치는 모듈
- Header-adding module -> Processing module -> Forwarding module -> Fragmentation module
3) 초록색 선
- Router에서 다음 hop으로 Packet을 전송할 때 거치는 모듈
- Processing module -> Forwarding module -> Fragmentation module
Module
1) Header-adding module
- checksum을 계산해서 넣음
- Encapsulation
- sending buffer에 datat를 전송
2) Processing module
- 도착 주소가 일치하면 reassembly module로 보냄
- router인 경우 TTL을 감소 시킴
-> TTL이 0 이하인 경우 datagram을 버리고 ICMP 전송
- 나머지 경우는 Forwariding module로 전송
3) Forwarding module
- Routing table을 보고 다음 Hop을 알아옴
4) Fragmentation module
- size가 MTU보다 큰 경우
-> D bit가 set 되어있으면 버리고 ICMP 전송
-> D bit가 unset이면 maximum size를 계산하여 fragmentation으로 나누고 header를 붙이고 전송
- size가 MTU보다 작거나 같은 경우
-> 그냥 전송
5) Reassembly module
- offset이 0 이고 M bit가 0인 경우
-> receving buffer에 전송
- 아닌 경우에는 reassembly table을 찾아봄
-> 없는 경우 새 entry 생성
-> list에 추가함
- 모든 fragment가 도착한 경우
-> fragment를 재조합하고 위 레이어에 전송
- 다 도착하지 않은 경우
-> 시간 초과 시, 모든 fragment를 버리고 ICMP 전송