TCP
UDP
는OSI
표준 모델과TCP/IP
모델의 전송 계층에서 사용되는 프로토콜이다.- 전송계층은 말 그대로 전송을 담당한다. 송신자와 수신자를 연결하는 통신 서비스를 제공하고 이때 전달되는 패킷의 오류를 검사하며 재전송 요구 제어등을 담당하는 계층이다.
TCP
UDP
는 포트 번호를 이용해 주소를 지정하는것과 데이터 오류검사를 하는 공통점을 가지고 있지만 다른 차이점이 존재한다.
- 양방향 통신.
- 데이터 유실과 흐름제어의 방지, 신뢰성이 높은 프로토콜, 데이터를 중요히 생각해 확실한 전송을 원할때 사용.
- 통신하는 컴퓨터끼리 전송확인, 수신확인 메시지를 보내며 데이터를 주고받음으로써 신뢰도 상승.
- 512bytes 보다 큰 데이터를 전송하는데 사용.
- 가장 대중적인
transport layer protocol
.- 데이터를 보내기 전 반드시 연결이 형성되어야 함.
- 1:1통신만 가능함.
- 단방향 통신.
- 데이터 유실과 흐름제어가 없어서 신뢰성 미보장.
- 대신
TCP
보다 빠른 속도.- 512bytes 보다 작은 데이터를 전송하는데 사용.
transport layer
에서 사용.application layer
에서 신뢰성이 핸들될 때 또는 시간적으로 예민한 경우에 사용한다.
TCP | UDP |
---|---|
연결 지향 프로토콜 | 비연결형 프로토콜 |
20bytes 헤더 사이즈 | 8bytes 헤더 사이즈 |
TCP 는 UDP 보다 느림 | UDP 는 error recovery 를 시도하지 않으므로 TCP 보다 빠름 |
데이터의 전송 순서 보장(각 바이트마다 번호 부여) | There are no tracking connections, ordering of messages |
error checking, error recovery 둘다 지원 | UDP는 오류 검사를 수행하지만 잘못된 패킷은 버림 |
수신여부 확인 -> handshake protocol 사용 ex) SYN, SYN-ACK, ACK | 수신여부 미확인 -> handshake를 사용하지 않는다 따라서 connectionless protocol |
Used for large messages where multiple segments need to be transferred | Used for small messages where single message/packet/segment need to be transferred |
1:1 통신 | 1:1, 1:N, N:N 모두 지원 |
연결 지향
: 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜을 의미.비연결 지향
: 데이터를 주고받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하는 방식을 의미.
SYN
: Synchronization request.ACK
: Acknowledgement of a message received.FIN
: Finish request.RST
: Reset request.
- 3 way handshake 는 TCP 통신을 연결할 때 사용하는 방식입니다.
- 클라이언트가 서버에게
SYN
- 서버가 클라이언트에게
SYN
+ACK
- 클라이언트가 서버에게
ACK
- 4 way handshake 는 TCP 통신의 연결을 해제할 때 사용하는 방식입니다.
- 클라이언트가 서버에게
FIN
- 서버가 클라이언트에게
ACK
- 서버가 클라이언트에게
FIN
- 클라이언트가 서버에게
ACK