TCP의 3방향 핸드셰이크와 4방향 웨이브에 대한 자세한 설명

青灯夜游
풀어 주다: 2019-11-29 16:43:35
앞으로
2356명이 탐색했습니다.

TCP의 3방향 핸드셰이크와 4방향 웨이브에 대한 자세한 설명

1. TCP (Transmission Control Protocol)

TCP는 연결 지향적이고 안정적인 프로세스 간 통신 프로토콜입니다.
TCP는 전이중 서비스, 즉 데이터를 전송할 수 있는 서비스를 제공합니다. 동시 양방향 전송

2. TCP 세그먼트(IP 데이터그램에 캡슐화됨)

TCP의 3방향 핸드셰이크와 4방향 웨이브에 대한 자세한 설명

1) 소스 포트 번호: 송신자 프로세스에 해당하는 포트 번호, 소스 IP와 포트의 역할은 메시지의 반환 주소를 표시하는 것입니다.

2) 대상 포트 번호: 수신측이 데이터 세그먼트를 수신한 후 이 포트를 기반으로 데이터를 애플리케이션 인터페이스에 매핑하는 프로세스에 해당합니다.

참고: TCP 헤더의 소스 포트 번호와 대상 포트 번호는 TCP 연결을 고유하게 결정하는 IP 데이터그램의 소스 IP 및 대상 IP와 동일합니다.

2. 시퀀스 번호: 수신 측에서 올바른 재조립을 용이하게 하기 위해 각 바이트에 송신 측 번호를 지정합니다.

3. 확인번호 : 발송인의 정보를 확인하기 위해 사용됩니다.

4. 제어 비트

1) URG: 비상 포인터 유효 비트입니다.

2) ACK: 승인 시퀀스 번호 비트입니다. 이 비트가 1이면 보낸 사람의 데이터를 확인하는 데 사용됩니다.

3) PSH: 플래그 비트가 1인 경우 수신 증폭기는 데이터 끝을 최대한 빨리 애플리케이션 계층에 전달해야 합니다.
4) RST: 1일 때 TCP 연결을 다시 설정합니다.
5) SYN: 동기화 시퀀스 번호 비트, TCP가 연결을 설정해야 할 때 이 값을 1로 설정합니다.
6) FIN: TCP가 연결을 끊을 때 이 비트를 1로 설정합니다.

5. 창 값: 로컬로 수신할 수 있는 데이터 세그먼트 수를 나타내는 데 사용됩니다. 창 크기는 가변적입니다. 이는 송신 측에서 데이터를 보내는 속도를 제어하여 흐름 제어를 달성합니다.

6. 체크섬: 오류 제어에 사용됩니다

7. 비상 포인터: 비상 포인터는 URG 플래그가 1로 설정된 경우에만 유효합니다.

8. 옵션: TCP 헤더에 있는 40바이트의 옵션 정보 가장 일반적인 옵션 필드는 가장 긴 메시지 크기입니다.

참고: 8개 필드 중 더 중요한 것은 포트 번호, 시퀀스 번호, 확인 시퀀스 번호 및 ACK, SYN 및 FIN의 세 가지 제어 비트입니다.

3. TCP 3방향 핸드셰이크(wireshark 패킷 캡처를 통해 분석)

TCP의 3방향 핸드셰이크와 4방향 웨이브에 대한 자세한 설명PC1은 실제 머신, PC2는 가상 머신 CentOS, PC1과 PC2는 동일한 가상 네트워크 카드에 바인딩되어 있습니다. VNet8, PC1 IP 주소는 192.168.90.10이고 PC2 IP 주소는 192.168.90.40입니다. 미리 CentOS에 계정 웹사이트를 구축하고, PC1은 PC2에 접속한 후 아래와 같이 패킷 캡처 도구를 사용하여 TCP 보고서를 캡처합니다.

1 첫 번째 핸드셰이크

TCP의 3방향 핸드셰이크와 4방향 웨이브에 대한 자세한 설명위 그림과 같이 패킷 캡처 도구를 통해 검색되었으며 원본 주소(source)는 192.168.90.10, 원본 포트 번호(source port)는 55604, 대상 주소(destination)는 192.168.168.90.40, 대상 포트 번호(destination) 포트)는 80입니다. 초기 시퀀스 번호와 승인 번호는 모두 0입니다. 첫 번째 핸드셰이크에서 PC1은 임의의 포트 번호를 사용하여 PC2의 포트 80에 연결 설정 요청을 보냅니다. 이 프로세스의 가장 일반적인 표현은 TCP의 SYN 제어 비트가 1이고 나머지 5개 제어 비트가 모두 0이라는 것입니다.

2. 두 번째 핸드셰이크

TCP의 3방향 핸드셰이크와 4방향 웨이브에 대한 자세한 설명위 그림과 같이 두 번째 핸드셰이크의 소스 주소, 포트 번호, 대상 주소 및 포트는 첫 번째 핸드셰이크와 반대입니다. 시퀀스 번호는 1입니다. 그리고 제어 비트의 ACK와 SYN은 모두 1입니다. 두 번째 핸드셰이크는 실제로 두 부분으로 완료됩니다.

1) PC2는 PC1의 요청을 수신하고 PC1에 확인 메시지로 응답합니다. 이 프로세스의 표시는 TCP ACK 제어 비트가 1이고 나머지 5개 제어 비트는 모두 0이라는 것입니다. 일련번호가 PC1의 초기 일련번호에 1을 더한 것인지 확인합니다.

2) PC2도 PC1에 연결 설정 요청을 보냅니다. 이 프로세스의 플래그는 첫 번째 핸드셰이크와 동일합니다. TCP의 SYN 제어 비트는 1이고 나머지 5개 제어 비트는 모두 0입니다.

3. 세 번째 핸드셰이크

TCP의 3방향 핸드셰이크와 4방향 웨이브에 대한 자세한 설명그림과 같이 소스 주소, 포트 번호, 대상 주소, 포트 번호는 첫 번째 핸드셰이크와 동일하며, 초기 시퀀스 번호는 확인 시퀀스 번호 1입니다. 확인 시퀀스 번호는 두 번째 핸드셰이크의 초기 시퀀스 번호에 1을 더한 것입니다. PC1은 PC2의 응답(요청 및 확인 포함)을 받은 후 PC2에 대한 확인 메시지로 응답해야 합니다. 이 프로세스의 가장 일반적인 신호는 TCP ACK 제어 비트가 1이고 나머지 5개 제어 비트는 0이며, 확인 일련번호는 PC2의 초기 일련번호가 1씩 증가합니다. 이로써 3방향 핸드셰이크가 완료되고 PC1과 PC2 사이에 TCP 연결이 설정됩니다.

4. TCP 연결 종료의 네 가지 물결

TCP의 3방향 핸드셰이크와 4방향 웨이브에 대한 자세한 설명

이때 PC1은 CentOS이고 해당 IP 주소는 192.168.90.40입니다. PC2는 실제 머신이고 해당 IP 주소는 192.168.90.10입니다. 패킷 캡처 연결 끊김 과정은 다음과 같습니다.

1. 처음으로 웨이브

TCP의 3방향 핸드셰이크와 4방향 웨이브에 대한 자세한 설명

PC1(서버) PC2 클라이언트는 FIN 및 ACK 비트가 1로 설정된 TCP 세그먼트를 보냅니다.

2. 두 번째 웨이브

TCP의 3방향 핸드셰이크와 4방향 웨이브에 대한 자세한 설명

PC2 클라이언트는 ACK 비트가 1인 TCP 세그먼트를 클라이언트에 반환합니다. PC1 서버 .

3. 세 번째 물결

TCP의 3방향 핸드셰이크와 4방향 웨이브에 대한 자세한 설명

PC2 클라이언트는 FIN 및 ACK 비트가 1인 TCP 패킷을 PC1 서버 단락으로 보냅니다. .

4. 네 번째 물결

TCP의 3방향 핸드셰이크와 4방향 웨이브에 대한 자세한 설명

PC1 서버는 ACK 비트 1이 포함된 TCP 세그먼트를 PC2 클라이언트에 반환하고 연결.

5. TCP 4웨이브의 반폐쇄적 개념(TCP 측은 데이터 전송을 중지하지만 수신 가능)

1) PC2 클라이언트 FIN 메시지 세그먼트, 반폐쇄됨 연결, PC1 서버는 ACK 메시지 세그먼트를 보내고 Half-Closed를 받습니다.

2) PC1 서버는 계속해서 데이터를 보내는 반면, PC2 클라이언트는 ACK 확인만 보내고 더 이상 데이터를 보내지 않습니다.

3) PC1 서버는 모든 데이터를 전송한 후 FIN 세그먼트를 보내고, PC2 클라이언트는 ACK 세그먼트를 보내 TCP 연결을 종료합니다.

위 내용은 TCP의 3방향 핸드셰이크와 4방향 웨이브에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
tcp
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!