TCP/UDP 정의
- transport Layer(전송계층)에서 사용하는 프로토콜
- 전송계층?⇒ 데이터의 전달
- 송신자(보내는 사람), 수신자(받는 사람)을 연결하는 통신서비스를 제공하는 계층
- 데이터를 보내기 위해 사용하는 프로토콜 = TCP/UDP
TCP (Transmission Control Protocol)
전송을 제어하는 프로토콜
⇒ 인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
- IP : 데이터의 배달
- TCP : 데이터의 패킷을 추적 및 관리
TCP만의 특징
⇒ 연속성보다 신뢰성있는 전송이 중요할 때에 사용하는 프로토콜
- 연결 지향 방식으로 패킷 교환 방식을 사용
- └ 패킷을 전송하기 위한 논리적 경로를 배정함
- 높은 신뢰성을 보장
- 흐름 제어 및 혼잡 제어
- 3-way handshaking 과정으로 연결을 설정 && 4-way handshaking을 통해 해제
- UDP보다 속도가 느림
- 전이중(Full-Duplex), 점대점(Point-to-Point) 방식
💡 흐름제어 | 혼잡제어
흐름제어
송신하는 곳에서 감당이 안되게 데이터를 빠르게 많이 보내면 수신자에서 문제가 발생하기 때문
└ 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
혼잡제어
네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것
└ 정보의 소통량이 과다하면, 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막음
⇒ TCP의 신뢰성이 높은 이유 : 흐름제어 + 혼잡제어
TCP 서버의 특징
- 서버 소켓은 연결만 담당
- 연결과정에서 반환된 클라이언트 소켓은 데이터의 송수신에 사용된다.
- 서버와 클라이언트는 1:1로 연결됨
- 스트림 전송으로 전송 데이터의 크기가 무제한이다.
- 패킷에 대한 응답을 해야하기 때문에 (시간지연, cpu소모) 성능이 낮음
- Streaming 서비스에 불리하다. (손실될 경우 재전송을 요청함)
UDP(User Datagram Protocol)
원래는 Datagram에서 끝나는게 맞는데, network layer에서 packeT ⇒ datagram segment라고 함!
사용자 데이터그램 프로토콜
⇒ 데이터를 데이터그램 단위로 처리하는 프로토콜
- Datagram : 독립적인 관계를 지닌 패킷
UDP만의 특징
⇒ 신뢰성보다는 연속성이 중요한 서비스
(실시간 서비스streaming)
└ 단, 최근에는 스트리밍도 TCP이용하는 추세 !
- 비연결형 프로토콜
- └ 연결을 위해 할당되는 논리적 경로가 없음 = 각 패킷은 다른 경로로 전송됨 = 각 패킷은 독립적인 관계를 지니게 된다.
- 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않음
- UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출
- 신뢰성이 낮음
- TCP보다 속도가 빠름
UDP 서버의 특징
- UDP에는 연결 자체가 없어서 서버 소켁과 클라이언트 소켓의 구분이 없음
- 소켓 대신 IP를 기반으로 데이터를 전송
- 서버와 클라이언트는 1:1, 1:N, N:M등으로 연결될 수 있음
- 데이터그램 단위로 전송되며, 그 크기는 65535바이트 → 초과시, 잘라서 보냄
- 흐름제어가 없어서 패킷이 제대로 전송되었는지, 오류가 없는지 확인 x
- 파일 전송과 같은 신뢰성이 필요한 서비스보다 성능이 중요시 되는 경우에 사용됨
※ 참고
https://mangkyu.tistory.com/15
'CS > 네트워크' 카테고리의 다른 글
HTTP/HTTPS/대칭키/비대칭키 (0) | 2023.08.10 |
---|---|
3-way & 4-way Handshaking (0) | 2023.08.09 |