반응형

오늘날에는 connection형 네트워크에서의 데이터 전송에는 주로 TCP (Transfer Control Protocol) 가 사용되고 있습니다. 그러나, 왜 이 목적을 위해서 다른 프로토콜보다 TCP 가 우선되는가 하는 생각을 해 본 적이 있습니까? 실제, TCP 는 2개의 디바이스간의 시큐어하고 신뢰성이 높은 접속합니다. 또, 이것이 가능한 것은, 2개의 디바이스간의 접속의 확립 및 종료시에 TCP 로 행해지는 3 웨이 핸드쉐이크 프로세스뿐입니다. 이름이 보이듯이, 접속의 확립과 종료에는 3개의 순서가 있습니다. 이 블로그에서는 TCP 의 3 웨이 핸드쉐이크 프로세스와 그와 관련된 다양한 단계에 대해 설명합니다. TCP 3웨이 핸드쉐이크 프로세스입니다. 3웨이 핸드쉐이크 프로세스는 안전하고 신뢰성 높은 통신링크를 작성하고 닫기 위해 TCP 에서 실행되는 일련의 정의된 절차입니다. 실제로는, TCP는 3 웨이 핸드쉐이크 프로세스를 사용하여, 데이터를 송신하기 전에 2 개의 디바이스간의 접속을 확립합니다. 접속이 확립되면, 디바이스간에 데이터 전송이 이루어집니다. 이후 3웨이 핸드쉐이크 프로세스를 사용하여 접속을 종료해야합니다. 안전하고 신뢰성 높은 접속이 확립되어 장치의 CPU, 버퍼 및 대역폭이 적절하게 통신할 수 있도록 예약됩니다. 따라서, 데이터 송신 후에 접속을 종료하고, 이러한 자원을 해방할 필요가 있습니다. 따라서, TCP 3 웨이 핸드쉐이크 프로세스를 사용하여, 시큐어인 방법으로 네트워크내의 접속을 확립 및 종료할 수 있습니다.

 

다음으로 TCP 헤더의 도해를 나타냅니다. 시퀀스 번호는 다음과 같습니다. 시퀀스 번호는 데이터의 첫 번째 비트에 할당되는 랜덤한 32 비트 (0 ~ (2^32-1))입니다. 일반적으로 시퀀스 번호는 한 연결에 한 번만 사용됩니다. 같은 접속으로 다른 데이터를 전송하는 경우에는 다른 랜덤 시퀀스 번호를 사용할 수 있습니다. 확인 응답 번호는 다음과 같습니다. 확인 응답의 송신측 디바이스가 송신측에서 다음에 예기하는 시퀀스 번호입니다. 통상은, 송신자로부터 수신한 시퀀스 번호보다 1 큰 값입니다. Window Size : 윈도우 사이즈는 버퍼 사이즈입니다. 버퍼내에서 데이터를 수신할 수 있는 최대 용량입니다. 최대 세그먼트 사이즈는 다음과 같습니다. 이것은 연결된 장치에 의해 허용되는 각 데이터 세그먼트의 최대 크기입니다. 이 사이즈를 넘으면, 디바이스는 데이터 세그먼트(segment)를 수신할 수 없게 됩니다. SYN 플래그:SYN은 동기화를 나타냅니다. 이는 접속을 확립하기 위한 요구로 기술할 수 있습니다. SYN이 1인 경우, 디바이스는 안전한 접속을 확립할 필요가 있으며 확립되지 않음을 의미합니다. ACK 플래그: ACK는 확인 응답을 나타냅니다. 이것은 SYN 의 응답으로서 기술할 수 있습니다.ACK가 1일 경우, 디바이스는 SYN 메시지를 수신하고 그렇지 않을 경우 SYN 메시지를 확인 응답합니다. FIN 플래그: FIN 는 Finished를 나타냅니다. 데이터 전송이 완료되면 장치는 FIN 플래그를 사용하여 연결을 종료해야 합니다. FIN 이 1 인 경우 장치는 연결을 종료하려고 합니다.그렇지 않은 경우는 종료되지 않습니다. 다음으로 3웨이 핸드쉐이크 프로세스를 사용한 접속 확립 그림을 나타냅니다.

 

클라이언트는 SYN 을 서버에 송신합니다. 클라이언트가 서버에 접속하는 경우입니다. "SYN" 플래그를 1로 설정하고 메시지를 서버로 보냅니다. 메시지에는 시퀀스 번호(임의의 랜덤 32비트 번호), ACK가 여기에서 0, 윈도우 크기, 최대 세그먼트 크기 등의 추가 정보도 포함되어 있습니다. 예를 들어, 윈도우 사이즈가 2000 비트이고, 최대 세그먼트 사이즈가 200 비트인 경우, 최대 10 개의 데이터 세그먼트(2000 200 = 10)를 접속으로 송신할 수 있습니다. 서버는 SYN과 ACK로 클라이언트에 응답합니다.클라이언트의 동기 요구를 수신하면 서버는 ACK 플래그를 1로 설정해서 클라이언트에 확인 응답을 보냅니다. ACK 의 확인 응답 번호가, 수신한 시퀀스 번호보다 1 많습니다. 예를 들면, 클라이언트가 시퀀스 번호=1000 의 SYN 를 송신했을 경우, 서버는 확인 응답 번호=10001 의 ACK 를 송신합니다. 또한 서버는 접속을 확립해야 할 경우 SYN 플래그를 1로 설정하여 클라이언트에 전송합니다. SYN 에 사용되는 시퀀스 번호는 클라이언트의 SYN 과는 다릅니다. 서버는 윈도우 사이즈와 최대 세그먼트 사이즈도 클라이언트에 어드바이스 합니다. 이 순서가 완료되면, 클라이언트에서 서버 측에 접속이 확립됩니다. 클라이언트는 ACK 를 서버에 송신합니다.서버로부터 SYN을 수신한 후, 클라이언트는 ACK 플래그를 '1'로 설정하고, 서버의 SYN 시퀀스 번호보다 큰 확인 응답 번호 1을 클라이언트에 송신합니다. 여기서, SYN 플래그는 「0」인 채입니다. 이 순서가 완료되면, 서버로부터 클라이언트 측으로의 접속도 확립됩니다. 접속이 확립되면, 송신측과 수신측의 최대 세그먼트 사이즈의 최소치가 데이터 송신용으로 고려됩니다. 다음은 3웨이 핸드쉐이크 프로세스를 사용한 접속 종료 그림을 나타냅니다.

 

TCP 에서 3웨이 핸드쉐이크 프로세스를 사용하여 접속을 종료하려면 다음의 3가지 절차를 수행합니다. 클라이언트는 FIN 을 서버에 송신합니다. 클라이언트가 연결을 종료하는 경우입니다. FIN 플래그를 「1」로 설정해, 랜덤 시퀀스 번호로 메시지를 서버에 송신합니다. 여기서, ACK 는 0 으로 설정됩니다. 서버는 FIN과 ACK로 클라이언트에 응답합니다.클라이언트의 종료 요구를 수신하면 서버는 ACK 플래그를 '1'로 설정하고 클라이언트에 확인 응답을 전송합니다. ACK 의 확인 응답 번호가, 수신한 시퀀스 번호보다 1 많습니다. 예를 들면, 클라이언트가 시퀀스 번호=1000 의 FIN 를 송신했을 경우, 서버는 확인 응답 번호=10001 의 ACK 를 송신합니다. 또 서버도 접속을 종료하는 경우 서버는 FIN 플래그를 1로 설정하고 클라이언트에게 전송합니다. FIN 에 사용되는 시퀀스 번호는 클라이언트의 FIN 과는 다릅니다.이 절차가 완료되면, 클라이언트에서 서버 측으로의 접속이 종료됩니다. 클라이언트는 ACK 를 서버에 송신합니다.서버로부터 FIN을 수신한 후 클라이언트는 ACK 플래그를 '1'로 설정하고 서버의 FIN 시퀀스 번호보다 큰 1을 클라이언트에 전송합니다. 여기서, FIN 플래그는 「0」인 채입니다. 이 단계가 완료되면 서버에서 클라이언트 측으로의 접속도 종료됩니다. 이 모든 것은 TCP 프로토콜에서 사용되는 3 웨이 핸드쉐이크 프로세스와 그 순서에 관한 것입니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">