TCP 연결 설정 및 해제

TCP는 연결은 세 단계로 방출되며, 데이터 전송 접속으로 분할하는 연결 지향 프로토콜은, 데이터 전송을 성립한다.

0 연결을 설정하기

연결의 설립은 종종 "세 방향 핸드 셰이크"고 말한다 :

  • 클라이언트가 서버에 SYN 패킷을 전송한다 (SYN = 1이이 접속 요구에 접속 또는 수신되는 것을 나타낸다)와, 무작위 시작 시퀀스 번호 (X);
  • 서버는 SYN 패킷에 응답 한 ACK는 (비트 양해) 1 [ACK는 ACK (확인 응답 넘버 필드)의 = TCP 세그먼트 헤더가 유효 1, 임의로 서버 측 Y 일련 번호부터 선택되고 ACK 필드는, X + 1로 전송 된 SYN 패킷을 수신 한 클라이언트를 대표하고, 상기 패킷의 다음 순서 번호 X + 1이 수신 된 것으로;
  • 시퀀스 번호 X + 1, Y + 및 ACK 필드에 응답 ACK 메시지가 1로 설정되어 클라이언트, 서버는 SYN 패킷에, 다음 패킷의 수신이 예상 시퀀스 번호 Y + 1을 수신 나타낸다.
    참고 : 또한 ISN (초기 시퀀스 번호)로 알려진 일련 번호 서열,
    바이두에서 사진
    이야기의 목적을 위해 핸드 쉐이크 메커니즘에서 대신 두 번 또는 네 번 세 방향 핸드 셰이크의 사용에 대한 이유 :
    주로 확인하는 핸드 셰이크 양 당사자의 전송을 수신은 정상입니다 , SEQ ID를 또한 후속하는 데이터 전송을위한 준비 초기화, 그래서 :
    제 악수 : 클라이언트 서버는 네트워크 패킷이 전송 수신 서버가 이해 클라이언트의 전송 기능의 수신 기능을 정상적으로 서버;
    제 핸드 쉐이크 : 서버 계약, 클라이언트는 수신 클라이언트가 이해할 수 , 전송, 클라이언트가받는 것은 정상입니다 수신, 보내는 서버를
    두 번째 핸드 셰이크 후, 모든 이해 client'd하지만, 서버는 클라이언트를 확인할 수 없습니다 정상적으로 수신 할 서버는 정상이다 ; 때문에 양방향 데이터 교환은 충분하지 않은
    서버가 마지막으로 정상 클라이언트 그래서, 네 번 정상 수신 확인 전송하고, 서버는 클라이언트에 의해 전송 된 네트워크 패킷을 수신한다 : 제 악수 핸드 셰이크가 중복됩니다.

    1 개 보충 질문

  • 시퀀스 번호 (ISN) 랜덤 발생기는, 공격당하는 것을 방지하기 위해 (고정 된 경우 ACK가 일단 명백한 전송된다) 이유;
  • 제 양방향 데이터 교환은 데이터를 반송 할 수 없으며, 셋째 수행 할 수있다. 운반 데이터가 손실 될 수 있습니다 경우 첫 번째 핸드 셰이크 알 수없는 서버는 능력을받습니다. 두 번째 클라이언트는 데이터가 캐리 경우 손실 될 수있는 능력을 알 수없는받습니다. 세 번째 클라이언트는 서버가 정상 수신하고 그들이 설립 상태가 알고;
  • 서버는 SYN 패킷을 전송 한 후, SYN-RCVD 상태로하고 다른 접속 요구가 배치 될 하프 접속 대기열을 연결 요청이 배치 된 후, 세 방향 핸드 쉐이크는 종료 전체 연결 대기열 안에.

이 연결 해제

: 프로세스 연결 해제는 종종 "네 파"고 말한다
PS의 클라이언트 수치는 예를 들어, 해제 요청을 시작합니다

  1. 클라이언트는 완료되고 클라이언트가 해제 요청 데이터를 전송할 수 있음을 나타내는 1로 설정되어있는 해제 요청의 FIN (정지 비트)를 전송한다;
  2. 서버는 ACK 수신 확인 번호 u는에서 해제 + 1 서버 연결 클라이언트에서 이번에는 ACK 패킷 송신 반 폐쇄 상태 ;
  3. 서버가 또한 연결되는 경우, 상기 클라이언트로의 접속 해제 메시지 (FIN = 1)를 송신;
  4. 클라이언트가 응답 패킷, U + 1의 시퀀스 번호 서열 후 접속을 종료 (2MSL), 서버는 ACK 패킷을받을 수 있도록 시간주기 동안 기다린 보낸다.

바이두에서 사진
클라이언트가 두 가지 이유로 종료 2MSL 시간을 기다릴 이유 :

  • 서버가 ACK 패킷을받지 못한되면, 서버가 FIN 메시지를 재전송합니다, 클라이언트가 손실을 보내기 전에 당신이 ACK 패킷을 알고, 다시 FIN 메시지를 수신, 타이머는 ACK 패킷을 기다리는 시간을 재설정하고 2MSL을 재전송합니다 원 총리.
    서버가 정상적으로 ACK 패킷을 수신하지 않는 경우이 대기 기간없이, 다음 재전송 FIN 세그먼트가 클라이언트에 도달하지 않을 것이다, 서버가 제대로 종료 할 수 없습니다.
  • 클라이언트는 네트워크에서이 새로운 오래된 연결 요청 세그먼트를 연결 나타납니다 피하기 위해 다음 번에 사라집니다이 연결 생성 된 메시지에, 2MSL 후, 그의 마지막 ACK 패킷을 완료했다.

추천

출처www.cnblogs.com/EIMadrigal/p/11560205.html