일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- TypeScript
- 다이나믹 프로그래밍
- 알고리즘
- DFS
- Graph
- 안드로이드
- Javascript
- java
- CS
- Data Structure
- DP
- git
- 동적 계획법
- Redux
- network
- Python
- 자바
- react
- Database
- vscode
- 백준
- 그레이들
- BFS
- LeetCode
- Algorithm
- db
- 프로그래머스
- 리트코드
- VIM
- frontend
Archives
- Today
- Total
늘 겸손하게
Network : 3-way handshake 본문
3 - way handshake
3-way handshake는 TCP(Transmission Control Protocol)에서 연결을 설정하기 위해 사용되는 과정입니다.
TCP는 연결지향적인 프로토콜로, 데이터 전송을 보장하고 신뢰성 있는 통신을 제공하기 위해 클라이언트와 서버 간에 논리적인 연결을 설정해야 합니다.
이러한 연결 설정을 위해 3-way handshake가 사용됩니다.
3-way handshake는 세 가지 단계를 거쳐 이루어집니다.
1 단계
클라이언트가 서버에게 연결을 요청 (SYN)
- 클라이언트는 서버에게 연결 요청을 보내기 위해 SYN(Synchronize) 패킷을 보냅니다.
- 이때, 클라이언트는 초기(sequence number) 시퀀스 번호를 선택하여 SYN 패킷의 헤더에 포함시킵니다.
- SYN 패킷은 클라이언트가 서버에게 연결을 설정하고자 한다는 신호입니다.
2 단계
서버가 클라이언트에게 응답 ( SYN + ACK )
- 서버는 클라이언트로부터 받은 SYN 패킷을 받은 후, 클라이언트로부터 온 초기 시퀀스 번호에 1을 더한 값을 다시 초기 시퀀스 번호로 선택합니다.
- 이후, 서버는 ACK(Acknowledgement)와 SYN 플래크를 설정한 패킷인 SYN + ACK 패킷을 클라이언트에게 보냅니다.
- SYN + ACK 패킷은 서버가 클라이언트의 연결 요청을 수락하고, 클라이언트가 서버의 시퀀스 번호를 받아들이도록 하는 것을 의미합니다.
3 단계
클라이언트가 서버에게 응답 ( ACK )
- 클라이언트는 서버로부터 SYN + ACK 패킷을 받은 후, 서버로부터 받은 초기 시퀀스 번호에 1을 더한 값을 다시 초기 시퀀스 번호로 선택합니다.
- 이후, 클라이언트는 ACK 플래그를 설정한 패킷인 ACK 패킷을 서버에게 보냅니다.
- ACK 패킷은 클라이언트가 서버로부터 온 SYN + ACK 패킷을 수락하고, 서버의 시퀀스 번호를 받아들이겠다는 의미입니다.
마무리
3-way handshake가 완료되면 클라이언트와 서버 간에 신뢰성 있는 연결이 설정되고, 이후 데이터를 안정적으로 주고받을 수 있게 됩니다.
이후 데이터 전송이 완료되면 연결을 해제하기 위해 4-way handshake가 사용됩니다.
'Computer Science > Network' 카테고리의 다른 글
Network 질문 리스트 (0) | 2023.10.23 |
---|---|
Network : 4-way handshake (0) | 2023.08.09 |
Network : TCP / IP (0) | 2023.07.28 |
CS - Network - 네트워크 분류 (0) | 2022.12.13 |
CS - Network - 네트워크 토폴로지 (Network Topology) (0) | 2022.12.13 |