Wireshark에서 TCP 3방향 핸드세이크 분석

Wiresharkeseo Tcp 3banghyang Haendeuseikeu Bunseog



전송 제어 프로토콜은 OSI 또는 TCP/IP 모델의 전송 계층에서 매우 중요한 프로토콜입니다. TCP에는 다음과 같은 많은 이점이 있습니다.

  • TCP는 보낸 데이터가 일정 시간 내에 수신자에 의해 확인되지 않으면 재전송합니다.
  • TCP는 데이터를 보내기 전에 일부 연결을 설정합니다. 이 연결을 3방향 핸드셰이크라고 합니다.
  • TCP에는 혼잡 제어 메커니즘이 있습니다.
  • TCP는 몇 가지 방법을 사용하여 오류를 감지할 수 있습니다.

TCP 3-way handshake를 중심으로 알아봅시다. Wireshark에서 3-way handshake를 위한 중요한 필드에 대해서도 알아봅시다.







3방향 핸드셰이크

3방향 핸드셰이크에서 발생하는 세 가지 프레임 교환이 있습니다.



  1. SYN
  2. 보기+확인
  3. ACK

첫 번째 프레임은 항상 클라이언트에서 서버로 전송됩니다. 간단한 다이어그램으로 이를 이해해 보겠습니다.



'클라이언트 서버'

Frame1: 클라이언트가 SYN 프레임을 서버로 전송 -------------------------------------------------->

<-------------------------------------------서버에서 SYN+ACK 프레임 전송 클라이언트: Frame2

Frame3: 클라이언트가 ACK 프레임을 서버로 전송-------------------->

Wireshark에서 이 세 가지 프레임을 볼 수 있습니다. Wireshark에서 'tcp' 필터를 사용하여 모든 TCP 프레임을 볼 수 있습니다. 세 프레임의 스크린샷은 다음과 같습니다.





이제 세 가지 프레임을 모두 자세히 이해하겠습니다.



SYN

이 프레임에는 서버에 알리는 클라이언트의 기능에 대한 많은 정보가 포함되어 있습니다. 다음 스크린샷은 SYN 프레임의 모든 중요한 필드를 보여줍니다.

다음은 SYN 프레임의 중요한 필드입니다.

소스 포트: 50602
대상 포트: 80
시퀀스 번호: 0
승인 번호: 0
헤더 길이: 32바이트
플래그: 0x002(SYN):
확인: 설정되지 않음
푸시: 설정되지 않음
재설정: 설정되지 않음
Syn: 설정 -----> 이 비트는 SYN 프레임이기 때문에 설정됩니다.
핀: 설정되지 않음

창: 65535
긴급 포인터: 0
TCP 옵션 - 최대 세그먼트 크기: 1460바이트
TCP 옵션 - 창 크기: 3(8을 곱함)
TCP 옵션 - SACK 허용

보기+확인

이 프레임에는 클라이언트에 알리는 서버의 기능에 대한 많은 정보가 포함되어 있습니다. 다음 스크린샷은 SYN+ACK 프레임의 모든 중요한 필드를 보여줍니다.

이 프레임은 또한 클라이언트가 보낸 SYN 프레임을 승인합니다.

다음은 SYN+ACK 프레임의 중요한 필드입니다.

소스 포트: 80
대상 포트: 50602
시퀀스 번호: 0
확인 번호: 1

헤더 길이: 32바이트(8)
플래그: 0x012(SYN, ACK)
승인: 설정
푸시: 설정되지 않음
재설정: 설정되지 않음
그의: 세트
핀: 설정되지 않음

창: 29200
긴급 포인터: 0
TCP 옵션 - 최대 세그먼트 크기: 1412바이트
TCP 옵션 - SACK 허용
TCP 옵션 - 창 배율: 7(128을 곱함)

이 프레임에서 'Acknowledge' 및 'SYN' 비트가 설정되어 있는 것을 볼 수 있습니다. 이것은 이 프레임이 SYN+ACK이기 때문입니다.

ACK

이 프레임은 3방향 핸드셰이크의 마지막 프레임이자 클라이언트의 SYN+ACK 승인이기도 합니다. 다음 스크린샷은 ACK 프레임의 모든 중요한 필드를 보여줍니다.

다음은 ACK 프레임의 중요한 필드입니다.

소스 포트: 50602
대상 포트: 80
시퀀스 번호: 1
확인 번호: 1
헤더 길이: 20바이트(5)
플래그: 0x010(ACK)
긴급: 설정되지 않음
승인: 설정
푸시: 설정되지 않음
재설정: 설정되지 않음
동의어: 설정되지 않음
핀: 설정되지 않음

창: 32768

여기서는 ACK 프레임이므로 'Acknowledge' 비트만 설정됩니다.

일부 중요한 공통 필드에 대한 설명

포트 80 : 이 튜토리얼에서는 하나의 고정 포트 80을 관찰했습니다. 이것은 HTTP 캡처이고 HTTP 통신을 위해 포트 80이 고정(서버 측)되기 때문입니다.

시퀀스 번호 : 해당 프레임의 시퀀스 번호입니다. 동기화는 첫 번째 프레임이므로 시퀀스 번호가 0입니다.

TCP 플래그:

승인 – 프레임이 ACK이면 이 비트가 설정됩니다. 예: SYN+ACK, ACK 프레임.

SYN – 프레임이 SYN이면 이 비트가 설정됩니다. 예: SYN.

창문 : 이 필드는 수신 모드에서 보낸 사람의 최대 창 크기를 공유합니다. 예: SYN 프레임의 창 크기는 65535바이트입니다. 이는 수신자가 어느 시점에서든 최대 65535바이트의 TCP 데이터를 수신할 수 있음을 의미합니다.

자루 허용 : send가 SACK[선택적 승인]을 지원하는 경우 이 비트가 설정됩니다.

최대 세그먼트 크기 : MSS라고 부를 수도 있습니다. 송신자가 수신할 수 있는 최대 데이터 프레임을 정의합니다. 예: SYN 프레임에서 MSS를 1460바이트로 얻습니다.

결론

우리는 TCP 3방향 핸드셰이크와 SYN, SYN+ACK 및 ACK 프레임에 대한 모든 유용한 필드에 대해 배웠습니다. TCP에 대해 자세히 알아보려면 이 RFC 링크를 따라갈 수 있습니다. https://tools.ietf.org/html/rfc793 .