Computer Science/Network

TCP 3way, 4way handshake

TLdkt 2023. 3. 8. 19:48
728x90
반응형

TCP의 송수신 방법 

참고) 세션 계층에서의 파일을 추상화한 것이 소켓

소켓에서 패킷을(사실은 세그먼트)를 받아 프로세스 식별자인 port를 통해 stream이 된 데이터를 분배한

즉, user mode application에서 process가 어떤 파일에 Stream 데이터를 write하는 과정을 생각해보자

Stream 형태의 데이터를 kernel인 TCP 즉 transport 계층을 만나 세그먼트로 분해가 되고,

segment를 IP 계층 즉, Network 계층으로 내려보내면 packet으로 묶인다

이 packet을 하드웨어로 내려보낼 때는 Frame이라는 이름으로 보낸다. 

 

클라이언트 , 서버가 있을 때 그림은 이렇다

소켓 = TCP,IP의 추상화 

 

  • Step 1 (SYN):
    처음으로, sender는 receiver와 연결 설정을 위해, segment를 랜덤으로 설정된 SYN(Synchronize Sequence Number)와 함께 보냅니다. 이 요청은 receiver에게 sender가 통신을 시작하고 싶다고 알립니다.
  • Step 2(SYN / ACK):
    receiver 는 받은 요청을 바탕으로 SYN/ACK 신호 세트를 응답합니다.
    Acknowledgement(ACK) 응답으로 보내는 segment가 유효한 SYN요청을 받았는지를 의미합니다.
  • Step 3(ACK):
    마지막 단계에서, sender는 받은 ACK를 receiver에게 전송을 하면서, 신뢰성 있는 연결이 성립되었다는 사실을 sender와 receiver 양쪽에서 알 수 있고, 실제 데이터 전송이 시작되게 됩니다.

segment를 받고 나서 ACK를 보냄

ACK#3 = 3번 세그먼트 보내라

다음 세그먼트를 받고자 할 때 ACK인 건지 아니면 잘 받았다는 의미인지 확인 필요

TCP buffer의 여유공간= window size

만약 mss(maximun segment size)보다 window size가 작다면 받을 수가 없다 

= TCP 버퍼에서 I/O read 스피드를 올려서 얼른 소켓으로 가져와야 한다

 

패킷 생성 원리

 

Stream 자르기- 세그먼트화 -packeet으로 encapsulation - frame화

 

3way handshake 시에 '연결'은 어떻게 확인할 수 있을까?

1) call을 해서

2) 응답을 받았다

로는 사실 부족하다

세그먼트 플래그  = syn, ack 등

segment 번호 +mss+정책(혼잡,흐름, 오류 제어 정책) 

4way handshake 시에 연결이 유지되는 이유

tcp의 '물리적인' 연결은 깨지더라도, 일정 기간 '논리적인' 연결은 이어진다

 

 

reference

https://www.geeksforgeeks.org/tcp-flags/?ref=lbp 

 

TCP flags - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

 

UDP에 대한 설명도 추가하면 좋겠지만, UDP는 흰 도화지처럼 기본 설정이 가벼워서 커스텀하기 좋고, 연결 설정에 상관없이 반응 속도가 빠르다~ 정도로 이해하자 

728x90
반응형