TCP 전송 연결-연결 설정 단계 (TCP 3 방향 핸드 셰이크)

목차

1. TCP 관련 개념 :

2. TCP 연결 설정 중 해결해야 할 문제 :

3. TCP 3 방향 핸드 셰이크 프로세스 :

네, 두 개의 메시지가 악수를 통해 연결을 설정할 수 있습니다.

5. 요약 :


1. TCP 관련 개념 :

1. TCP는 연결 지향 프로토콜입니다.

2. TCP는 TCP 세그먼트를 전송하기 위해 전송 연결 (물리적 연결이 아니라 논리적 연결)을 기반으로합니다.

TCP 전송 연결의 설정 및 해제는 모든 연결 지향 통신에서 없어서는 안될 프로세스입니다.

3. TCP 전송 링크에는 세 단계가 있습니다.

(1) 연결을 설정합니다 (3 자 핸드 셰이크).

(2) 데이터 전송.

(3) 연결을 해제합니다 (침을 네 번 흔들기).

 

4. TCP 전송 연결 관리는 전송 연결의 설정 및 해제가 정상적으로 진행되도록하는 것입니다.

2. TCP 연결 설정 중 해결해야 할 문제 :

1. 양 TCP 당사자가 상대방의 존재를 알 수 있도록합니다.

2. 양측 TCP 당사자가 일부 매개 변수 (예 : 최대 창 값, 창 확장 옵션 및 타임 스탬프 옵션 사용 여부, 서비스 품질 등)를 협상 할 수 있도록 허용합니다.

3. 전송 엔티티 리소스 (예 : 캐시 크기, 연결 테이블의 항목 등)를 할당하는 기능.

3. TCP 3 방향 핸드 셰이크 프로세스 :

여기에는 두 개의 호스트가 있으며 TCP를 기반으로 통신해야합니다. 호스트 A의 응용 프로그램 프로세스가 TCP 클라이언트라고하는 연결 설정을 적극적으로 시작합니다. 호스트 B에서 수동적으로 대기하는 애플리케이션 프로세스를 TCP 서버라고합니다. , TCP 연결 설정 과정을 핸드 셰이크와 비교하여 TCP 클라이언트와 서버간에 세 개의 TCP 세그먼트를 교환해야합니다.


처음에는 양 끝의 TCP 프로세스가 닫히고 처음에는 호스트 B의 서버 프로세스가 먼저 전송 제어 블록을 생성하여 TCP 연결 테이블, 송수신 포인터와 같은 TCP 연결에 중요한 정보를 저장합니다. 버퍼, 재전송 포인터 큐 포인터 등 그 후 TCP 클라이언트 프로세스의 연결 요청을 수락 할 준비가되었으며, 이때 TCP 서버 프로세스는 수신 대기 상태로 들어가 TCP 클라이언트 프로세스의 연결 요청을 기다립니다. TCP 서버 프로세스는 수동적으로 대기합니다. TCP 클라이언트 프로세스에서 연결 요청을 능동적으로 보내는 대신 수동으로 열린 연결이됩니다.


호스트 A의 TCP 클라이언트 프로세스도 먼저 전송 블록을 생성 한 다음 TCP 연결을 설정하려고 하면 호스트 B에 TCP 연결 요청 세그먼트를 전송하고 동기화 된 전송 상태로 들어갑니다 . 의 헤더에있는 동기화 비트 SYN TCP 연결 요청 세그먼트 TCP 연결 요청 세그먼트 임을 나타내는 1로 설정 되며, seq 필드는 TCP 클라이언트 프로세스에서 선택할 수있는 초기 시퀀스 번호 로 x설정됩니다 . (TCP는 SYN이 1로 설정된 세그먼트는 전송 데이터를 쓸 수 없지만 시퀀스 번호를 사용한다고 규정합니다.)


TCP 연결 설정은 TCP 클라이언트 프로세스에 의해 시작되기 때문에 능동적으로 연결을 여는 것을 말합니다.

 

 


TCP 연결 요청 세그먼트를 수신 한 후 호스트 B 의 서버 프로세스는 연결 설정에 동의 하고 TCP 연결 요청 확인 세그먼트를 호스트 A의 TCP 클라이언트 프로세스에 전송 하고 동기화 된 수신 상태로 들어갑니다. TCP 확인 요청 세그먼트의 첫 번째 부분 인 SYN = 1, ACK = 1은 이것이 TCP 연결 요청 확인 세그먼트임을 나타냅니다 . seq (시퀀스 번호) 필드는 TCP 서버 프로세스에서 선택한 초기 시퀀스 번호 로 y 로  설정되고 확인 필드 ack는 x + 1로 설정됩니다 (선택된 시퀀스 번호 필드 (seq = x)의 확인입니다. TCP 연결 요청에 의해).

 


 


호스트 A 의 TCP 클라이언트 는 일반 TCP 확인 세그먼트를 전송 하고 연결 설정 상태, TCP 확인 세그먼트 ACK = 1 (일반 TCP 확인 세그먼트임을 나타냄), 시퀀스 번호 seq 필드가 x + 1로 설정됩니다. (첫 번째 전송의 시퀀스 번호는 x이고 데이터를 전달하지 않기 때문에 두 번째 세그먼트의 시퀀스 번호는 x + 1입니다), 확인 번호의 ack 필드는 y + 1로 설정됩니다  (TCP 서버가 프로그램 번호 확인).

 


  호스트 B의 서버 프로세스는 수정 된 TCP 세그먼트를 수신 한 후 연결 성립 상태가되며, 이제 양 TCP 당사자는 연결 성립 상태로 들어가 데이터를 전송할 수 있습니다.

 


4. 연결을 설정하기 위해 두 개의 메시지가 악수를 할 수 있습니까?

불가능합니다.

이유:

호스트 A의 TCP 클라이언트 프로세스는 TCP 연결 요청 세그먼트를 보내지 만 세그먼트가 일부 네트워크 노드에 갇혀있어 불가피하게 세그먼트의 시간 초과 및 재전송이 발생합니다.


시간이 지남에 따라 재전송 된 TCP 메시지 세그먼트가 TCP 서버에 도착했다고 가정하면 TCP 클라이언트는 TCP 연결 요청 확인 메시지 세그먼트를 TCP 서버로 보내고이 시점에 두 개의 핸드 셰이크가 있으므로 TCP가 연결 설정 상태로 들어갑니다. 서버 TCP 연결 요청 설정 상태를 직접 입력합니다.


TCP 클라이언트 프로세스가 TCP 서버로부터 TCP 연결 요청 확인 세그먼트를 수신 한 후에는 연결 설정 상태에 있으며 TCP 서버에 TCP 확인 세그먼트를 보내지 않습니다. 연결 상태를 설정하고 데이터를 전송 한 다음 네 개의 메시지를 통해 손을 흔들어 연결을 해제 할 수 있습니다.


둘 다 닫힌 상태에 들어가면 TCP 서버는 클라이언트 프로세스의 연결 요청을 수락 할 준비가 된 수신 상태가되고 TCP 클라이언트 프로세스는 항상 닫힌 상태에 있습니다 (응용 프로그램 프로세스가 새로운 프로세스 연결이 필요합니다).


이때 유효하지 않은 애플리케이션 프로세스가 호스트 B에 도착하고 TCP 서버 프로세스는 이것이 TCP 클라이언트에서 재전송 된 요청이라고 착각하여 TCP 클라이언트에게 TCP 연결 요청 세그먼트를 전송하도록 요청합니다 (그리고 연결 설정 상태). 호스트의 TCP 연결 요청 세그먼트는 호스트 A에 도착합니다. 호스트 A는 닫힌 상태이고 TCP 연결을 시작하지 않았으므로 세그먼트를 무시하고 닫힌 상태를 유지합니다. 이때 호스트 B의 리소스가 낭비됩니다.


 다섯, TCP 3 방향 핸드 셰이크 요약 :

1. 첫 번째 핸드 셰이크 : TCP 클라이언트와 TCP 서버가 모두 닫힙니다. 클라이언트는 서버에 TCP 요청 연결을 전송하고 동기화 비트 SYN을 1로 설정하고 x의 시퀀스 (시퀀스 번호) 값을 임의로 생성하고이 세그먼트를 클라이언트에 전송하고 동기화 비트 전송 상태에 있습니다. 

2. 두 번째 핸드 셰이크 : TCP 서버는 TCP 클라이언트가 보낸 요청 연결을 수락하고 SYN을 1, ACK를 1, seq (시퀀스 번호) y, ack x + 1을 사용하여 TCP 요청 확인을 보냅니다. 받은 상태.

3. 세 번째 핸드 셰이크 : 호스트 A의 TCP 클라이언트가 일반 TCP 확인 메시지 세그먼트를 전송하고 연결 설정 상태, TCP 확인 메시지 세그먼트 ACK = 1 (일반 TCP 확인 메시지 세그먼트임을 나타냄), 시퀀스에 들어갑니다. number seq 필드는 x + 1로 설정되고 (첫 번째 전송 된 시퀀스 번호는 x이고 데이터를 전달하지 않으므로 두 번째 세그먼트의 시퀀스 번호는 x + 1), 확인 번호의 ack 필드는 y +로 설정됩니다. 1 (프로그램 번호를 입력하는 TCP 서버의 확인입니다).

 

참고 : 비디오 정보는 "호수 과학 기술 대학 교사"를 참조합니다.

 

 

 

추천

출처blog.csdn.net/weixin_43690348/article/details/112692825