본문 바로가기
IT 기본지식

TCP 3Handshake는 어떻게 진행되는가?

by 내기록 2022. 7. 24.
반응형

TCP(Transmission Control Protocol)

Connection-oriented protocol

Reliable transport protocol → The requires the flow and error control.

전송 제어 프로토콜로 신뢰할수 있는 방식으로 데이터의 전송을 제어하기 위한 것을 나타낸다.

 

데이터를 보내기 위해서 두 TCP(클라이언트-서버) 사이에서 가상의 연결을 만든다.

TCP는 flow, error control mechanisms을 transport level에서 사용한다.

 

TCP는 IP 패킷(IP 데이터그램) 이라고 불리는 작은 조각을 통해 데이터를 전송한다.

TCP는 Segment라는 단위로 데이터 스트림을 잘게 나누고, IP패킷이라 불리는 봉투에 담아 인터넷을 통해 데이터를 전달한다.

 

PowerPoint Presentation B.A. Forouzan, Communication Networks, 4th ed., McGraw-Hill

 

TCP segment format

TCP는 연결로 전송되는 모든 데이터 바이트에 번호를 매긴다.

segment : TCP에서 사용되는 패킷

PowerPoint Presentation B.A. Forouzan, Communication Networks, 4th ed., McGraw-Hill

  • Source port address.
  • Destination port address.
  • Sequence number : 각각의 Segment에 대한 Sequence number는 해당 세그먼트에 전달된 첫 번째 바이트 수이다.
  • Acknowledgment number : Ack number는 당사자가 수신할 것으로 예상되는 다음 바이트의 번호를 정의한다.
  • Header length.
  • Reserved.
  • Control : flag의 6개의 제어 비트
  • Window size : 일반적으로 수신 창(rwnd)으로 불리며 수신기에 의해 결정된다. 발신인은 수신자의 구술을 따라야 한다.
  • Checksum.
  • Urgent pointer : 세그먼트의 데이터 섹션에서 마지막 긴급 바이트 번호를 얻기 위해 시퀀스 번호에 추가해야 하는 번호를 정의한다.
  • Options : TCP 헤더에는 최대 40바이트의 선택적 정보가 있을 수 있다.

 

Control field

PowerPoint Presentation B.A. Forouzan, Communication Networks, 4th ed., McGraw-Hill

 

A TCP Connection

TCP에서 연결 지향 전송은 연결 설정, 데이터 전송, 연결 종료의 세 단계를 필요로 한다.
 
Three-Way Handshaking
  • 서버 프로그램은 TCP에 연결을 허용할 준비가 되었다고 알립니다. 이를 'passive open' 요청이라고 한다.
  • 클라이언트 프로그램이 'active open' 요청을 발행한니다. 클라이언트는 TCP에 특정 서버에 연결해야 함을 알린다.

TCP는 연결로 전송되는 모든 데이터 바이트에 번호를 매긴다.

 

3HandShake 진행 과정

Connection establishment using three-way handshaking 

커넥션을 맺기 위한 과정입니다.

 

- For establishing connection

 
PowerPoint Presentation B.A. Forouzan, Communication Networks, 4th ed., McGraw-Hill

 

Step 1(SYN) : 클라이언트는 SYN을 서버로 보낸다. 클라이언트가 서버에 연결하려고 할 때 'SYN' 플러그인을 1로 설정하고 메시지를 서버로 전송한다.

메시지에는 시퀀스 번호(임의의 32비트 번호), ACK가 0, Window size, 최대 세그먼트 크기와 같은 정보들도 함께 포함되어 있다.

 

Step 2(SYN+ACK) : 서버는 SYN과 ACK를 사용하여 클라이언트에 응답한다.

클라이언트의 Synchronization(동기화) 요청을 받은 후 서버는 ACK 플러그를 '1'로 설정하여 확인 응답을 보낸다.

ACK의 승인 번호는 수신된 시퀀스의 번호보다 1 높다. (8000+1)

 

Step 3(ACK) : 클라이언트는 서버에서 SYN을 수신한 후 ACK 플래그를 '1'로 설정하고 서버의 SYN 시퀀스 번호보다 1높은(15000+1) 승인번호를 서버에 전송한다. 

 

 

- For terminating connection

PowerPoint Presentation B.A. Forouzan, Communication Networks, 4th ed., McGraw-Hill

 

 

Step 1(FIN) : 클라이언트는 연결을 끊기 위해 FIN 요청을 서버로 보낸다. 클라이언트가 연결을 종료하려고 할 때 FIN플래그를 '1'로 설정하고 메시지를 무작위로 시퀀스 번호를 서버에 보낸다. 여기서 ACK는 0으로 설정된다.

 

Step 2(FIN+ACK) : 서버는 FIN과 ACK로 클라이언트에 응답한다. 클라이언트의 종료 요청을 받은 후 ACK 플래그를 '1'로 설정하여 클라이언트에 확인 응답을 보낸다. ACK의 승인 번호가 수신된 시퀀스 번호보다 1 더 많다.(x+1)

서버가 종료하기를 원하는 경우 서버는 FIN 플래그를 '1'로 설정하고 클라이언트로 전송한다.

이때 서버에서 전송하는 FIN의 시퀀스 번호는 클라이언트의 FIN과 다르다(y)

이 단계를 완료하면 클라이언트에서 서버 측으로의 연결이 종료된다.

 

 

 

References

PowerPoint Presentation B.A. Forouzan, Communication Networks, 4th ed., McGraw-Hill

https://afteracademy.com/blog/what-is-a-tcp-3-way-handshake-process

https://www.geeksforgeeks.org/tcp-3-way-handshake-process/

https://feel5ny.github.io/2019/08/26/HTTP_004_01/

반응형

댓글