Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- 파이썬
- 데이터베이스
- 스프링
- 리눅스
- 백준
- javascript
- 네트워크
- CS
- 자바스크립트
- 스프링부트
- DB
- CS지식
- 스프링 부트 쇼핑몰 프로젝트 with JPA
- 시큐리티
- springboot
- JPA
- python
- spring
- Oracle
- 플러터
- Flutter
- baekjoon
- postgresql
- 자료구조
- backjoon
- Spring Security
- 프로그래머스
- 데이터
- 자바
- Java
Archives
- Today
- Total
Jin's Dev Story
[네트워크] TCP 3 way handshake & 4 way handshake 본문
연결을 성립하고 해제하는 과정
3 way handshake - 연결 성립
- TCP는 정확한 전송을 보장해야 함
- (SYN : 연결 요청 플래그 / ACK : 응답)
- 클라이언트가 서버에게 접속을 요청하는 SYN 패킷을 보냄 (sequence : x)
- 서버가 클라이언트 요청인 SYN(x)을 받고, 클라이언트로 받았다는 신호(요청을 수락한다는)인 ACK와 SYN이 설정된 패킷을 보냄 (sequence : y, ACK : x + 1)
- 클라이언트는 서버의 수락 응답인 ACK(x+1)와 SYN(y) 패킷을 받고, ACK(y+1)를 서버로 보냄 → 그러면 연결 성립
→ 이렇게 3번의 통신이 완료되면 연결이 성립된다. (3번이라 3 way handshake인 것)
4 way handshake - 연결 해제
연결 성립 후, 모든 통신이 끝났다면 해제해야 함
- 클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보냄
- 서버는 클라이언트의 요청인 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보냄 (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 됨)
- 데이터를 모두 보내고 통신이 끝났으면, 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보냄
- 클라이언트는 FIN을 받고, 확인했다는 ACK를 서버에게 보냄 (아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다린다.)
- 클라이언트의 ACK 메시지를 받은 서버는 소켓을 닫음 (Closed)
- TIME_WAIT 시간이 끝나면 클라이언트도 닫음 (Closed)
-> 이렇게 4번의 통신이 완료되면 연결이 해제됨
'CS 지식 > [네트워크]' 카테고리의 다른 글
[네트워크] HTTP & HTTPS (0) | 2023.07.17 |
---|---|
[네트워크] GET & POST (0) | 2023.07.17 |
[네트워크] 대칭키 & 공개키 (0) | 2023.07.17 |
[네트워크] TCP & UDP (0) | 2023.07.17 |
[네트워크] OSI 7계층 (0) | 2023.07.17 |