web, network 등 전송이 필요한 모든 곳에서 쓰이는 TCP, UDP에 대해 알아보자.
📤 Transport Layer
🛡️ TCP


- 데이터를 중요하게 생각하여 확실히 주고받고 싶을 때는 TCP(Transmission Control Protocol)를 사용함.
- TCP는 통신할 컴퓨터끼리
보냈습니다
, 도착했습니다
라고 서로 확인 메시지를 보내면서 데이터를 주고받음으로써 통신의 신뢰성을 높임.
- 이는 TCP의 가장 중요한 특징으로, 연결의 설정(3-way handshaking)과 해제(4-way handshaking)이 사용됨.
- TCP는 연결 지향적 프로토콜임.
- 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜을 의미.
- 클라이언트가 연결 요청(SYN 데이터 전송)을 하고, 서버가 연결을 수락하면 통신 선로가 고정되고, 모든 데이터는 고정된 통신 선로를 통해서 순차적으로 전달.
- 그렇기 때문에 TCP는 데이터를 정확하고 안정적으로 전달.
- TCP는 호스트간 신뢰성 있는 데이터 전달과 흐름을 제어함.
- TCP는 패킷을 성공적으로 전송하면(ACK) 라는 신호를 날리고 만약에 ACK 신호가 제 시간에 도착하지 않으면 Timeout이 발생하여 패킷 손실이 발생한 패킷을 다시 전송.
- 데이터를 송신할때마다 확인 응답을 주고받는 절차가 있으므로 통신의 신뢰성이 올라감.
<aside>
💡 앞서 언급한 전송 계층이 없다면 발생할 문제 데이터의 순차 전송 보장
, 흐름 제어
, 혼잡 제어
를 해결할 수 있음.
</aside>
- 웹이나 메일, 파일 공유 등과 같이 데이터를 누락시키고 싶지 않은 서비스가 사용 중.
TCP 헤더

송수신자의 포트 번호와 제어 비트(Flag Bit)에 SYN, ACK, FIN 등의 제어 번호가 있음.
- SYN : 연결 설정 요구. TCP 에서 세션을 성립할 때 가장먼저 보내는 패킷, 시퀀스 번호를 임의적으로 설정하여 세션을 연결하는 데에 사용되며 초기에 시퀀스 번호를 보냄.
- ACK : 응답 번호 필드가 유효한지 설정할때 사용하며 상대방으로부터 패킷을 받았다는 걸 알려주는 패킷. 클라이언트가 보낸 최초의 SYN 패킷 이후에 전송되는 모든 패킷은 이 플래그가 설정되어야 함.