TCP(3)_TCP Connection, Data Transfer, Connection Termination

eheka·2025년 3월 24일

컴퓨터 네트워크

목록 보기
3/3

TCP Connection

Set up 과정의 3-way hand shaking

1. SYN segment

seq: 8000 | Server에 연결 요청

  • 8000은 랜덤값임.
  • header만 전달됨.

2. SYN + ACK segment

seq: 15000 | Client에 연결 요청
ack: 8001 | Client의 연결 승인

  • 15000은 랜덤값임.
  • 8001은 Server가 다음에 받아야하는 seq num임.
  • header만 전달됨.

3. ACK segment

seq: 8000 | garbage 값임
ack: 15001 | Server의 연결 승인.

  • 15001은 Client가 다음에 받아야하는 seq num임.
  • 이 그림에서는 ACK segment의 data가 없으므로 seq가 garbage 값

Q. ACK segment의 seq가 garbage 값인지 알수 있을까?

A. data의 값이 없기 떄문에 seq가 garbage임. 반대로 data가 있으면 garbage가 아님.

  • SYN + ACK segment 과정은 2개(ACK 전달 후, SYN 전달)로 분리해도 괜찮음.
  • 이 세 과정이 끝나면 Client와 Server에 buffer가 만들어진다.
  • Server, Client 별로 buffer가 상이함.



Data Transfer (양방향)



Connection Termination

Terminate 과정의 3-way hand shaking

FIN segment

seq: x | Server에 연결 종료 요청

FIN + ACK segment

seq: y | Client에 연결 종료 요청
ack: x + 1 | 종료 요청 승인

  • ack를 통해 Client에 종료 되었다는 사실을 알려줌.

ACK segment

ack: y + 1 | 종료 요청 승인

  • ack를 통해 Server에 종료 되었다는 사실을 알려줌.

Terminate 과정의 4-way hand shaking

  • Terminate 과정의 3-way hand shaking과 나머지는 동일하지만 FIN + ACK segment가 다름.
  • FIN은 사람이 보내고, ACK는 시스템이 보냄.
  • FIN을 하면 read는 0을 반환함.

ACK segment, FIN segment

  • FIN + ACK segment가 4hand에서는 FIN segment, ACK segment로 분리됨.

Q. ACK segment, FIN segment이다.와 FIN + ACK segment의 차이점?

A. ACK segment, FIN segment 사이에 무슨 일을 하냐에 따라 동시에 나갈수도, 따로 나갈 수도 있음. 여기서 동시에 나가는 경우는 FIN + ACK segment이고, 따로 나가는 경우는 ACK segment, FIN segment이다.



Packet exchange for TCP connection



Half-Close

  • Client는 close하고, Server는 닫지 않고 계속해서 data를 전달하는 그림이다.

  • Server에서 Client의 연결을 끊는 것을 승인한 후에 Client의 Sending buffer를 삭제한다. 하지만 receiving buffer는 아직 살아있다.
  • 맨 마지막 packet에서 처럼, sending buffer가 닫혀도(half-close) 응답(ack)은 해줘야함



profile
Hey there!

0개의 댓글