UDP 헤더
1. 출발지 포트 번호( 2byte )
2. 도착지 포트 번호( 2byte )
3. 헤더의 크기( 2byte ) - 데이터 포함
4. 체크섬( 2byte )
- IP 헤더의 일부 데이터를 체크섬에 같이 계산
5. 데이터(가변크기)
UDP 체크섬 계산하는 법( TCP도 같음 )
Pseudo(의사,가짜) 헤더
- 체크섬을 계산하기 위한 용도
- 데이터로 보내면 안됨
- 출발지 아이피(4) + 도착지 아이피(4) + 제로바이트(1) + 프로토콜 타입(1) + UDP 헤더의 길이(2) + UDP 헤더
실습
- 192.168.4.117 은 UDP 서버를 연다.
- 192.168.11.166 은 서버에게 패킷을 보낸다.
7 ~ 8 : 직접 패킷을 조작해서 전송할거기 때문에 로우 소켓을 만든다.
15 ~ 17 : 도착지와 출발지 맥어드레스를 입력하고 IPv4(0x0800) 타입을 입력한다.
19 ~ 29 : 전체크기(IP헤더 + UDP헤더 + 데이터)와 프로토콜 타입(UDP = 17) 출발지 IP,
도착지 IP을 지정해주고 체크섬을 계산해서 넣어준다.
31 ~ 40 : 출발지 포트(아무거나), 도착지 포트(서버에서 설정한 포트),전체 크기(UDP헤더 + 데이터)
를 지정해주고 체크섬을 계산해서 넣어준다.
42 : 이더넷 헤더, IP 헤더, UDP 헤더를 보낸다.
이더넷 헤더의 역할
ethernet 안에서(Layer-2) 스위치로만 구성 (star형-물리적으로 같은 스위치에 연결되있는)된 네트워크에서는
mac address만 있으면 됨 실제통신은 이더넷헤더가지고 함
그런데 네트워크가 너무커서 분리시켜놓음
왼쪽에 있는 네트워크에서 오른쪽에 있는 호스트에게 ARP로 통신할수없음 (ARP 통신엔 IP헤더가 없기때문)
왼쪽 네트워크에서 오른쪽 네트워크한테 통신하려면 IP헤더가 있어야함 (Layer-3)
그럼 ARP 통신을 못하면 다른 네트워크에 있는 호스트의 맥 어드레스를 모르는데 어떻게 통신하냐?
바로 게이트웨이(라우터)가 있기때문에 가능함
다른 네트워크 호스트(철수)에게 보낼 패킷(IP헤더가 있음)을 게이트웨이(A)에게 보내면 게이트웨이(A)가
호스트(철수)에 속한 네트워크의 게이트웨이(B)에게 라우팅으로 알아서 보내준다.
그럼 게이트웨이(B)가 호스트(철수)의 맥어드레스를 ARP로 알아내어
게이트웨이(B)가 호스트(철수)에게 패킷을 전송하여 통신한다.
192.168.11.166이 192.168.4.117에게 보낸 패킷이다.
IP 헤더를 확인해보면 도착지 IP는 192.168.4.117이지만
이더넷 헤더를 확인해보면 실제 패킷은 게이트웨이를 통해 나간것을 확인 할 수 있다.
'Hacking > Network' 카테고리의 다른 글
[19일차] TCP 소켓 통신과정 분석 (0) | 2017.10.24 |
---|---|
[18일차] TCP 헤더 분석 (0) | 2017.10.23 |
[16일차] IP 패킷 분할해서 핑 보내기 (0) | 2017.10.15 |
[15일차] ICMP 패킷 만들어서 핑 보내기 (0) | 2017.10.13 |
[14일차] IP 헤더 체크섬 계산법과 ICMP 헤더 (0) | 2017.10.13 |
WRITTEN BY