본문 바로가기
Operating System/network

[network] TCP 구조, 3-way-handshake, tcpdump 명령어

by 노반장 2020. 1. 14.

tcpdump

리눅스에서 tcpdump 명령어를 통하여 서버에 들어오는 패킷 정보를 볼 수 있음

- tcpdump src [IP] : IP로 부터 오는 패킷을 보여줌

- tcpdump dst [IP] : IP로 향하는 패킷을 보여줌

- tcpdump port [port] : 포트가 [port]인 것(양방향)

  tcpdump src port [port] / tcpdump dst port [port] 

- tcpdump -i eth192 : 인터페이스 eth192로 통하는 패킷을 보여줌

- tcpdump tcp : TCP 인것만 보여줌

- tcpdump udp : UDP 인것만 보여줌

 

*combine : and, or, not

- tcpdump src [IP] and not dst port [port] : [IP]로 부터 들어오며 목적지 포트가 [port]가 아닌 패킷

 

-tcpdump -w tcpdump.log : 결과를 파일로 떨구며, wireshark 등으로 분석에 쓰임

-tcpdump -r tcpdump.log : 떨어진 tcpdump 파일을 읽음 (cat 으로 읽을 수 없음)

TCP 헤더 구조

TCP 헤더 구조

 

Source Port addres 필드 : 데이터를 생성한 애플리케이션에서 사용하는 포트번호

Destination Port address 필드 : 목적지 애플리케이션이 사용하는 포트 번호

Sequence Number 필드 : 세그먼트 순서를 맞추기 위한 필드

Acknowledgement Number 필드 : 다음 세그먼트 수신 준비 및 모든 데이터 수신 확인 역할

Offset 필드 : TCP 헤더의 크기 ( 5~15 : 5*32<160bit> ~ 15*32<480bit> )

Reserved 필드 : 차후의 사용을 위한 예약된 필드

Control Flags 필드 : 긴급, 혼잡, 확인, 수신 거부 등의 기능

Window size 필드 : 수신자가 한번에 받을 수 있는 데이터의 양. 송신자는 Window size만큼 ACK를 기다리지 않고 데이터를 전송. ACK가 계속 왔다갔다 하지 않아도 된다

Checksum 필드 : 세그먼트 내용의 유효성과 손상 여부 검사

 

3-way-handshake & 4-way-handshake

 

참고

https://mindnet.tistory.com/entry/네트워크-쉽게-이해하기-19편-TCP-Header-4계층-TCP-헤더-구조?category=702276

https://evan-moon.github.io/2019/11/10/header-of-tcp/#%ED%8C%A8%ED%82%B7-%EA%B5%90%ED%99%98-%EB%B0%A9%EC%8B%9D%EC%9D%98-%EB%AC%B8%EC%A0%9C%EC%A0%90

https://www.joinc.co.kr/w/Site/Network_Programing/AdvancedComm/Window_size

 

댓글