꿈꾸는 개발자의 블로그
[CS] 네트워크 (2) : TCP 연결관리 본문
TCP 연결관리
연결을 성립하고 해제하는 과정을 말한다.
2 way handshake
2-way handshaking은 서버와 클라이언트가 서로의 상황을 모른다는 점에서 문제가 있다.
- 클라이언트가 서버에 연결 요청
- 서버가 클라이언트에 응답
3 way handshake
TCP는 정확한 전송을 보장해야 한다. 따라서 통신하기에 앞서, 논리적인 접속을 성립하기 위해 3 way handshake 과정을 진행한다.
- 클라이언트가 서버에 연결 요청 : SYN 보냄 (SYN=1, Seq#=client initial seq#)
- 서버가 요청을 받고, 클라이언트에게 잘 받았다는 신호로 응답 : SYN 받고, SYNACK 보냄
- 클라이언트는 서버가 준 응답을 잘 받았음을 서버에 응답 : SYNACK 받고, ACK 보냄
4-way handshake: 연결 종료
연결 성립 후, 모든 통신이 끝났다면 해제해야 한다.
- 클라이언트가 서버에 연결 종료 요청 : FIN 보냄
- 서버는 요청을 받고, 클라이언트에게 확인했다고 응답 : FIN 받고, ACK 보냄 (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 됨)
- 데이터를 모두 보냈다면, 서버가 클라이언트에게 연결 종료 요청 : FIN 보냄
- 클라이언트가 서버에 응답 : FIN 받고, ACK 보냄 (아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다림)
- 서버는 ACK를 받은 이후 소켓을 닫는다 (Closed)
- TIME_WAIT 시간이 끝나면 클라이언트도 닫는다 (Closed)
728x90
728x90
'Interview > Computer Science' 카테고리의 다른 글
[CS] 네트워크 (1) : OSI 7계층 (0) | 2022.07.16 |
---|---|
[CS] 자료 구조 (4) : 해시 테이블 (Hash Table) (0) | 2022.07.15 |
[CS] 자료 구조 (3) : 트라이 (Trie) (0) | 2022.07.14 |
[CS] 자료구조 (2) : 이진탐색트리 (BST), B 트리, 힙 (Heap) (0) | 2022.07.13 |
[CS] 자료 구조 (1) : 리스트, 스택, 큐, 트리 (0) | 2022.07.12 |
Comments