베지밀

[네트워크] IP 패킷, TCP 세그먼트 헤더 구조 본문

교육, 프로젝트/시큐리티 아카데미 4기

[네트워크] IP 패킷, TCP 세그먼트 헤더 구조

vegimil 2024. 7. 5. 17:01

IP 패킷 헤더 특징

네트워크 계층에서 데이터의 단위를 '패킷'이라고 부른다.

패킷 헤더의 길이는 총 20byte로 구성되어 있다.

이더넷 프레임(MAC 프레임)에서 최대로 수용 가능한 데이터가 1500byte이므로, 상위 계층인 IP패킷의 최대 크기(MTU, Maximun Transmission Unit)은 1500byte가 된다.

이 중, TCP와 IP헤더의 길이(20byte+20byte)를 제외하면 실질적으로는 1460byte의 데이터가 담기게 된다.

 

IP 패킷 헤더 구조

Version Number : IPv4인지, IPv6인지를 구분하는 필드. 아직까지는 4를 많이 사용한다.

Header Length : Header의 길이인 20byte를 표현하는 필드. 표현의 단위가 4byte이기 때문에 4byte*5 = 20byte로 해당 필드에는 5가 들어간다.

Service Type : 전송 능력, 즉 처리 우선순위를 표현하는 필드. 인터넷은 평등한 통신을 지향하므로 지금은 쓰지 않으며, 모든 필드가 0으로 채워져있다.

Packet Length : 헤더 포함 패킷의 전체 길이.

 

Identification : 데이터가 1500byte 이상일 경우, 분할해서 보내야 하는데 이때 같은 데이터를 식별하는 식별번호. 분할된 패킷에 대해서는 동일한 번호를 부여한다.

DF(Don't Fragment) : 패킷 분할을 금지하는 필드. DF가 1이면 패킷을 분할하면 안된다는 뜻.

MF(More Fragment) : 뒤에 패킷이 더 있는지 아닌지를 알려주는 필드. MF가 1이면 뒤에 패킷이 더 온다는 의미이고, 0이면 마지막 패킷을 의미한다.

Fragment offset : 패킷 분할 시, 순서를 맞추기 위해 사용하는 필드. 분할 전 데이터에서의 상대 주소값.

 

Time to Live : 패킷의 생존 시간. 라우터를 거칠 때마다 숫자가 감소하여 0이면 해당 패킷은 소멸된다. 네트워크 상의 쓰레기 데이터를 줄이기 위함

Transport : 상위계층 프로토콜을 표현. IPv4의 상위계층은 전송계층이고, 06이라는 숫자가 들어간다.

Header Checksum : 무결성 검사를 위한 필드.

 

Source Address : 송신자의 IP주소

Destination Address : 수신자의 IP주소

 

Options 필드는 가변길이로 최대 40byte를 갖지만, 사용하지 않는다.

Padding 필드 역시 IP헤더 크기를 4byte로 맞춰주기 위한 필드로, 사용하지 않는다.

 

 

TCP 세그먼트 헤더 특징

4계층 전송계층은 흐름제어와 오류제어, 연결형 서비스를 통해 신뢰성있는 통신을 보장한다.

전송계층에서 데이터의 단위는 '세그먼트'이다.

UDP의 경우, 비연결형이므로 헤더 구조는 tcp보다 더 단순하고, 데이터의 단위는 '데이터그램'이다.

TCP 헤더 역시 20byte의 크기를 갖는다.

TCP 세그먼트 헤더 구조

 

Source Port : 송신자의 포트번호.

Destination Port : 수신자의 포트번호. 웹서버의 경우 80이며, 자주 사용하는 서버는 고정된 포트번호를 갖는다.

 

Sequence Number : 송신자가 보내는 데이터에 대해 순서를 매긴 번호.

Acknowledgement Number : 수신자가 성공적으로 수신했고, 다음에 수신하고자 하는 번호.

 

TCP Header Length(Data Offset) : 20

Reserved : IP의 Service type과 비슷. 0으로 채워짐.

 

Flagbit들

SYN : 연결이 동기화되었음을 의미하는 플래그

FIN : 데이터 전송이 완료되었음을 의미하는 플래그

ACK : 성공적으로 수신했음을 알리는 플래그

RST : 에러 상황에서 연결을 초기화할 때 사용하는 플래그

PSH : 데이터를 상위 계층으로 즉시 전달할 때 사용하는 플래그

URG : 긴급 데이터. but Urgent Pointer와 함께 사용하지 않는다.

 

Window : 흐름제어에 사용. 버퍼가 수신 가능한 데이터의 양

Checksum : 무결성 검증에 사용.

Urgent Pointer : 긴급하게 처리되어야 할 때 사용. 긴급 데이터의 끝 주소를 가리킨다.

 

Options와 Padding은 IPv4와 동일.

 

 

사진 참고

https://infjin.tistory.com