TCP: Connection Management
3 - way handshake (Connection Establish)
✔ 세그먼트를 주고 받기 전에 sender와 receiver 간의 연결(connect) 해야 한다.
✔ 서로의 seq#, buffer 상태 등등...
![image](https://user-images.githubusercontent.com/109324637/194763336-c3750405-96ca-4909-af8b-733aeca1921a.png)
- client가 server한테 tcp connection 연결 요청을 보낸다.
✔ tcp segment를 SYNbit = 1로 해서 보낸다.(평소에는 0)
✔ client의 첫 seq#를 보낸다. - server는 client한테 SYNACK를 보낸다.
✔ client가 보내온 seq#+1을 ACKnum으로 한다.
✔ server의 첫 seq#를 보낸다. - client는 SYNACK에 대한 ACK를 보낸다.
✔ SYNbit는 다시 0이 된다.
✔ 여기서부터는 패킷에 데이터 포함 가능
Closing TCP Conncection
![image](https://user-images.githubusercontent.com/109324637/194764262-b37895f2-e34b-4885-b0d3-48118b0daa7d.png)
- client가 sever에 FIN control segment를 보낸다.
- sever가 FIN을 받으면 ACK를 보내고 server도 FIN을 보낸다.
- client가 FIN을 받고 ACK를 보낸다.
✔ ACK가 확실히 전달되도록 'timed wait' - server가 ACK을 받으면 연결이 종료된다.
TCP server & client lifecycle
![image](https://user-images.githubusercontent.com/109324637/194764395-a80a6327-7d71-486d-9eb2-15958bef9f9b.png)
'⭐ Group_Study > Networking' 카테고리의 다른 글
[5주차] Network Layer : Intro (0) | 2022.10.20 |
---|---|
[4주차] TCP: Congestion Control (0) | 2022.10.15 |
[4주차] TCP: Flow Control (0) | 2022.10.13 |
[3주차] TCP: Reliable Data Transfer (0) | 2022.10.06 |
[3주차] TCP의 Segment Structure (0) | 2022.10.05 |
댓글