<aside>
💡 TCP 와 UDP 같은 듯 다른 ? 다른 듯 같은 ? 차이가 뭘까?
</aside>
⚒️ TCP와 UDP
- TCP와 UDP 는 TCP/IP 모델의 전송 계층에서 사용되는 프로토콜
- 전송계층 : IP 에 의해 전달되는 패킷의 오류를 검사하고, 재전송 요구 등의 제어를 담당하는 계층
- 두 프로토콜은 모두 패킷을 한 컴퓨터에서 → 다른 컴퓨터로 전달해주는 **
IP 프로토콜
**을 기반으로 구현되어 있지만, 서로 다른 특징이 있다.
👌🏻 TCP (Transmisstion Control Protocol)

TCP 란?
- 네트워크 계층 중 **
전송 계층
**에서 사용하는 프로토콜
- 장치들 사이에 논리적인 접속을 성립하기 위해 연결을 설정해 → **
신뢰성
**을 보장하는 연결형 서비스
- 네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟(데이터, 메시지, 세그먼트라는 블록 단위)를 **
안정적
**으로, 순서대로
, 에러없이
교환 가능하게 함
TCP 특징
1. 연결형 서비스
-
가상 회선 방식을 제공하는 연결형 서비스
🤝 3-Way Handshake
- TCP/IP 프로토콜을 사용해 통신을 진행할 때, 서버와 클라이언트 종단 간 정확한 데이터 전송을 보장하기 위해 “연결을 설정”
- 클라이언트 → 서버 : 서버 접속 요청 **
SYN 패킷
**을 전송
- 서버 → 클라이언트 : 요청 수락 응답 **
ACK 패킷
**과 + 포트를 열어달라는 **SYN 패킷
**을 전송
- 클라이언트 → 서버 : 확인 응답으로
ACK 패킷
전송
- SYN(Synchronize Sequence Number)
- ACK(Acknowlegement)
🤝 4-Way Handshake
- 클라이언트 → 서버 : 연결을 해제하겠다는
FIN 패킷
전송
- 서버 → 클라이언트 : 응답으로
ACK 패킷
전송
- 서버 → 클라이언트 : 처리해야 할 모든 통신을 끝내고 → 연결을 종료하겠다는
FIN 패킷
전송
- 이때, 서버가 FIN 을 보내기 전에 보냈던 데이터가 FIN 보다 늦게 도착할 경우?
- 서버로부터 FIN 을 수신했다고, 클라이언트가 바로 연결된 소켓을 닫아버리면 ?
- FIN 을 보내기 전에 보낸 패킷은 클라이언트가 영영 받을 수 없게 됨
- 따라서, 클라이언트는 서버로부터 FIN 요청을 받더라도 일정시간 소켓을 닫지 않고, 혹시나, 아직 도착하지 않은 잉여 패킷을 기다림 ⇒ Time Wait ⏱️
- 클라이언트 → 서버 : 확인 응답으로
ACK 패킷
전송