Network - Ipv4패킷 구조
IPv4 패킷 구조
↑ IPv4( IP version 4 ) 패킷
# 현재 쓰이는 대부분의 패킷
Ethernet Header
- 이더넷 프로토콜 ( 물리적 통신방법 ) 을 지원하는 방식을 이더넷 헤더라고 한다.
- 사이즈 : 14byte
구성 |
크기 |
특징 |
도착지 하드웨어 주소 ( Destination MAC Address ) |
6bytes |
* |
출발지 하드웨어 주소 ( Source MAC Address ) |
6bytes |
* |
Ethernet Type | 2bytes | - 대표적인 타입 : IP, arp, ... - 길이 : 3~1500bytes |
IP header
- IP 패킷의 앞부분에서 주소등 각종 제어 정보를 담고 있다.
- 사이즈 : 최소 20bytes ~ 60bytes
↑IP header 구성
구성 |
크기 |
특징 |
Version |
4bits |
현재 IPv4를 사용 |
Header Length( IHL ) |
4bits |
헤더의 길이 |
Type of Service |
8bits |
- 요구되는 서비스 품질 - 서비스 형태에 따라서 서비스 질에 차이를 줌 ( 현재는 사용되지 않는다. ) |
Total Packet Length |
16bits |
- IP header + tcp( udp ) + data - IP packet의 전체 크기 |
Fragment Identifier |
16bits |
- 각 조각이 동일한 데이터 그램에 속하면 같은 일련번호를 취한다. |
Fragmentation Flag |
16bits | - 분열의 특성을 나타내는 플래그 |
Fragmentation Offset |
- 조각나기 전 원래의 데이터 그램 8bytes 단위의 위치 |
|
TTL( Time To Live ) |
8bits |
- IP 패킷 수명 |
Protocol |
8bits |
- Protocol의 type - ICMP( 1 ) , TCP( 6 ) , UDP ( 17 ) |
Header Checksum | 16bits |
- 헤더에 대한 오류 검출 |
Source IP Address |
32bits |
- 출발지 IP 주소 |
Destination IP Address |
32bits |
- 도착지 IP 주소 |
IP 헤더 옵션 |
가변 |
- 기능추가를 위해서 사용 ( 보안기능등) |
Padding |
가변 |
- 특별한 용도x, 32bit 크기를 맞추기 위해 사용 |
Fragment 3개의 필드는 IP 단편화( 조각화, 분열 )과 재배열과 관련된 필드이다.
TCP/UDP header
- UDP 헤더는 8bytes, TCP 헤더는 20Bytes이다.
# TCP header
↑ IP Datagram
↑TCP header 구성
구성 |
크기 |
특징 |
Source Port / Destination Port |
각 16bit |
- IP주소 + 포트 번호 = 소켓 주소 |
Sequence Number |
32bit |
- 바이트 단위로 구분되어 순서화되는 번호 ( 이를통해 TCP에서는 신뢰성 및 흐름제어 ) - 순서 가능범위 : 32bits 이므로 최대 4기가 바이트 크기의 송신 데이터를 순서화 가능 - 순서번호의 의미 : TCP 세그먼트의 첫번째 바이트에 부여되는 번호 - 초기 순서번호 ( ISN, Initial Sequence Number ) : 초기 TCP 연결설정을 위함 # 난수 발생기로 초기순서번호( ISN )를 생성, 이를 순서번호 필드에 넣어서 전송 # TCP는 양방향이므로 각 방향 마다 다른 ISN번호가 사용된다. |
Acknowledgement |
32bits |
- 확인응답번호/ 승인번호 : 수신하기를 기대하는 다음 바이트 번호 = ( 마지막 수신성공 순서번호 +1 ) |
헤더 길이 필드 |
4bits |
- TCP 헤더 길이를 바이트( 32bits ) 단위로 표시 |
예약된 영역 |
6bits |
- 사전에 예약된 영역 |
6개의 Flag bits |
6bit |
- TCP 세그먼트 전달과 관련되어 TCP 회선 및 데이터 관리, 제어 기능을 하는 플래그 - 순서대로 긴급 데이터, 응답, 밀어넣기, 다시연결, 연결 요청, 연결 종료 요청 → (URG, ACK, PSH, RST, SYN, FIN) |
윈도우 크기 |
16bits |
- 흐름제어를 위해 사용되는 필드 - TCP 연결은 양방향이므로, 매 TCP 세그먼트를 보낼때 마다 이 필드에 자신의 수신 버퍼 용량값을 채워 보내게됨 |
Checksum |
16bits |
- 검사 필드 |
Urgent pointer |
16bits |
- TCP 세그먼트에 포함된 긴급 데이터의 마지막 바이트에 대한 일련번호 |
옵션 |
가변 |
- 최대 40바이트 까지 옵션 데이터 포함 가능 |
# UDP header
- UDP 헤더는 TCP처럼 16bits의 포트번호를 사용하지만, 헤더는 고정크키 8bytes만 사용한다.
# 헤더 처리에 많은 시간과 노력을 요하지 않는다.
구성 |
크기 |
특징 |
수신 포트 번호 |
|
* |
패킷 전체 길이 |
최소 8bits( 헤더 만 포함 될 떄 ) |
* |
checksum | 가변 | 선택항목, 체크섬 값이 0이면 수신측은 체크섬 계산을 하지 않는다. |
Network - LAN 과 WAN (0) | 2017.04.07 |
---|---|
Network - 인터넷, 인트라넷, 엑스트라넷 (0) | 2017.04.06 |
Network - TCP 통신과 UDP통신 (3) | 2017.03.29 |
Network - 소켓통신 (1) | 2017.03.24 |
네트워크 해킹 연습 사이트 (0) | 2017.02.12 |
좀 알려주세요 현기증 난단 말이에요..