나는 마침내 흔들며 TCP 세 방향 핸드 셰이크 네를 알게 (사진 케이스 상세)

개발 또는 인터뷰 중 흔들며 TCP 세 방향 핸드 셰이크 네는 최적화 웹 애플리케이션 성능에 대한 우리의 기초가 매우 중요한 지식입니다. 학습과 함께 진행에 오신 것을 환영합니다

.TCP 소개

  • TCP (전송 제어 프로토콜, 전송 제어 프로토콜) 是一种面向连接的、可靠的、基于字节流的通信协议전송 전에 데이터 연결을 설정하지만, 전송이 완료된 후도 분리합니다.
  • 클라이언트 전에 연결 () 함수와 서버에 대한 연결을 사용하여 데이터를주고받을 수 있습니다. 목적은 접속 IP 주소, 포트의 설립을 보장하기 위해, 그리고 다른 물리적 링크 데이터의 전송을위한 올바른 오픈 채널입니다.
  • TCP는 연결 일반적 세 방향 핸드 셰이크라고도 설정된 3 개 개의 패킷을 송신하고 (3 방향 핸드 쉐이킹)

그림 삽입 설명 여기

두 .TCP 데이터 그램 구조

그림 삽입 설명 여기

  • ① 번호 서열 (서열 번호)를 차지 컴퓨터가 데이터를 전송할 때 표시되어 컴퓨터 B의 데이터 패킷에 컴퓨터 A로부터 전송 된 시퀀스 번호를 식별하는 데 사용되는 일련 번호 32 비트.
  • ② 승인 번호 : 긍정 응답은 (수신 확인 번호) 32 비트 확인 응답 번호를 차지하고, 클라이언트와 서버는 긍정 = 1 + 서열 보낼 수있다.
  • ③ 플래그 각 플래그 각각에 1 비트, 총 6, URG, ACK, PSH, RST, 차지 SYN, FIN, 다음과 같은 특정의 의미 :

URG : 긴급 포인터 (긴급 포인터가) 유효합니다.
ACK : 승인 번호가 유효하다.
PSH가 : 수신기는 가능한 한 빨리 응용 계층에 메시지 있어야한다.
RST : 연결을 재설정합니다.
SYN : 새 연결을 설정합니다.
FIN은 : 연결을 해제.

세 .TCP 세 방향 핸드 셰이크

  • 过程描述
  • ① 먼저 클라이언트는 접속 요구 패킷을 전송
  • ②Server 접속 응답 ACK 패킷을 수신 한 후 시간과이 연결을위한 자원 할당.
  • ③Client ACK 패킷은 서버 세그먼트에 ACK 패킷을 수신 한 후 발생하고, TCP 연결이 설정 될 수 있도록 자원을 할당.

그림 삽입 설명 여기

  • 쓰촨 항공과 예를 들어 자녀를위한
  • ① 시추 8633는 연결 요청 (SYN)를 구축하고, 시퀀스 번호를 전송한다.
  • ② 신호, 즉 확인 된 수 (ACK)에 의해이 때 동일한 시퀀스 번호 서열 복귀 요청에 서비스 종료
  • ③ 클라이언트는 신호, 즉, 확인 수 (ACK)은, 연결이 설정 받는다.
    그림 삽입 설명 여기
  • 요약 : 三次握手的关键是要确认对方收到了自己的数据包목표는 "확인 응답 (ACK)"필드에 의해 달성된다. 컴퓨터는 상대방이, 패킷을 수신하고 "승인 수 (ACK)"필드를 검출 할 때까지 자신의 전송 패킷 시퀀스 번호 서열을 기록한다 看Ack = Seq + 1是否成立,如果成立说明对方正确收到了自己的数据包.

  • 두 악수합니다. 这个时候客户端没有回应,这样会浪费服务端的资源
    그림 삽입 설명 여기

당신이 제 3의 통신을해야하는 이유에 대해 생각하면 그?

  • 제 1 통신 처리에서는, B의 전송 정보 A 후, B 형 송신에 아무런 문제가 확인 응답 정보를 수신 기능과 능력을 수용하지 후.
  • 두 번째 통신에서, A는 자신의 능력 B는 능력을 신호하고 문제를 수신하지 확인할 수 있지만, 결국 기능이 신호들은 B, ​​우리는 세 번째 통신을 필요 있도록 방법을 알고하지 마십시오 후 B에게 메시지를 보내 .
  • 세번째 통신에서 B 로의 전송 정보 A 후, B는 문제를 송신하지 능력을 확인할 수있다.
  • 요약 : 핸드 쉐이크는 두 가지 중요한 기능을 수행하는 3 방향 既要双方做好发送数据的准备工作(双方都知道彼此已准备好)뿐만 아니라 당사자가 초기 시퀀스 번호를 협상 할 수 있도록이 일련 번호는 핸드 쉐이크 과정에서 전송되고 인정 받고 있습니다.

네 파의 네 .TCP

  • 연결이 매우 중요하다 확립하기 위해서는 정확한 데이터 전송을위한 전제 조건이며, 마찬가지로 중요한 연결, 그것은 컴퓨터가 더 이상 사용하지 않는 리소스를 해제 할 수 없습니다. 연결이 정상적으로 열려 있지 않은 경우에만 데이터 전송 오류가 발생하지,하지만 소켓을 닫을 수 없습니다에 납, 높은 동시성의 양, 서버 스트레스가 걱정하는 경우, 자원을 소모하는 것을 계속했다.

// 프로세스 설명

  • A : "작업 처리가 완료되고, 나는 연결을 끊을."
  • B : "?. 오, 그래 내가 준비 보류하시기 바랍니다있다."
  • 잠시 동안 대기 후 ......
  • B : "나는 단절 될 준비 해요."
  • A는 : "예, 감사합니다."

그림 삽입 설명 여기

  • 시추 항공사들도 예
  • ① 어플리케이션 서버 연결이 해제, 즉 FIN, 서열 + 긍정 전송 인
  • ② 클라이언트는 정보 다시, 내가받은이 나타냅니다 수신
  • 클라이언트는 정보를 나타내는 ③ 분리 할 수 ​​있습니다를 전송
  • ④ 서버가 정보를 적용하고 데이터를 반환 승인 된 정보가있다

그림 삽입 설명 여기

  • 데이터 전송이 완료된 후, 양측의 접속을 해제 할 수있다. 맨 처음, 클라이언트와 서버가 설정 상태에있는 다음 클라이언트, 서버, 수동 가까이 종료 주도권을 쥐고.

왜 폐쇄 악수를 때 연결이 세 방향 핸드 셰이크 때?

  • ① SYN 서버 클라이언트 말단은 연결 요청 메시지에 직접 SYN + ACK 패킷을 송신 할 수 있기 때문에 수신 할 때. 상기 ACK 메시지는 응답을 위해 사용되며, SYN 패킷 등을 동기화하는데 사용된다.
  • 연결이 닫힐 때 ② 그러나, 서버 측 FIN 패킷이 수신 될 때, 아마 가까운 즉시 소켓 않습니다, 우리는 첫 번째 ACK 패킷 만 응답, 말했다 클라이언트 측, "당신은 내가받은 FIN 메시지를 보냅니다."수 .
  • ③ 내 모든 서버 메시지의 끝이 송신되는 때까지만, 나는 때문에 FIN 패킷을 보낼 수 있습니다 함께 보낼 수 없습니다. 그것은 4 단계 핸드 셰이크를 필요로한다.

  • 补充问题
  • TCP 세 방향 핸드 셰이크는 신뢰할 수있는 전송 할 일을 보장 할 수있을 것인가?不能
  • 세 방향 핸드 셰이크는 두 배 이상 더 안정적이지만, 그것은 신뢰할 수 없습니다 및 연결이 더 안정적하지 악수를 더 추가 할 수 있습니다. 그래서 세 방향 핸드 셰이크를 선택합니다.
  • 완전히 신뢰할 수있는 통신 프로토콜은 세계에 존재하지 않습니다. 신뢰성의 측면에서 통신 시간 비용 및 공간 비용에서 점 통신에 포인트로 일반적인 규칙 "세 방향 핸드 셰이크"를 선택합니다.

  • The best investment is in yourself.

그림 삽입 설명 여기

  • 2020.03.19 来自辰兮的第32篇博客
게시 35 개 원래 기사 · 원 찬양 (116) ·은 30000 +를 볼

추천

출처blog.csdn.net/weixin_45393094/article/details/104965561