Network - TCP 3 way handshake & 4 way handshakeINFRA/NETWORK2023. 9. 13. 09:43
Table of Contents
3 way handshake
-TCP는 장치들 사이에 연결을 초기화 할 때 사용
-TCP로 이루어지는 모든 통신은 반드시 3-way handshake를 통해 시작
- 사용하는 클라이언트와 서버는 데이터를 전송하기 전 먼저 서로 통신이 가능한 지 의사를 묻고 한 번에 얼마나 받을 수 있는지 등의 정보를 확인한다. (신뢰성 있는 통신==데이터를 안전하고 빠지는 부분 없이 보내기 위함)
TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에
먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.
- 클라이언트 - >서버 : SYN 패킷을 보냄(통신 가능한지 확인, port열려있어야..) (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)
<참고>
서버가 3명밖에 못받으면 클라이언트가 계속 대기함
이거 막으려고 타임아웃 이라는 기능이 있다 (소켓통신)9999명이 있음 해결x
보안이 좋지 않아 http통신으로 해결 : 무조건 들어갔다 나와야함
하지만 이제는 https 쓴다
'INFRA > NETWORK' 카테고리의 다른 글
NAT (Network Address Translation) (0) | 2024.07.30 |
---|---|
1.인프라 아키텍처 (0) | 2024.03.25 |
Network - OSI 7계층 (0) | 2023.09.13 |
4.결과를 전달하는 HTTP 상태코드 (0) | 2023.08.25 |
2.간단한 프로토콜 HTTP (0) | 2023.08.25 |