연결의 신뢰성, 송신의 안정성, 패킷유실
tcp와 udp는 OSI 7계층들 중 전송계층에서 사용되는 프로토콜입니다.
즉, 데이터의 전달을 담당하며 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당합니다.
TCP와 UDP 둘 다 포트 번호를 이용하여 주소를 지정한다는 공통점을 가지고 있지만 차이점이 있는데
각각에 대해 알아보자
TCP란?
TCP는 연결 지향적 프로토콜입니다. (클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜)
장치들 사이에 논리적인 접속을 성립하기 위해 연결을 설정해 신뢰성을 보장하는 연결형 서비스입니다.
TCP는 네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟(데이터, 메세지, 세그먼트 라는 블록단위)를 안정적으로, 순서대로, 에러없이 교환할 수 있게 합니다.
- 연결형 서비스로 가상 회성 방식을 제공
발신지와 수신지를 연결하여 패킷을 전송하기 위한 논리적 경로를 배정한다는 것
3-way handshaking 과정을 통해 연결을 설정하고,
4-way handshaking 과정을 통해 연결을 해제한다. - 데이터 흐름 제어
데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지 - 혼잡 제어
네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지 - 높은 신뢰성을 보장
데이터의 흐름 제어나 혼잡제어 등 신뢰성이 높은 전송을 하기 때문에 UDP보다 속도가 느리다 - 전이중, 점대점 방식
전이중 : 전송이 양방향으로 동시에 일어날 수 있다.
점대점 : 각 연결이 정확이 2개의 종단점을 가지고 있다.
TCP는 연속성보단 신뢰성이 있는 전송이 중요할 때 사용하는 프로토콜이다(파일 전송 등)
TCP는TCP에서는 패킷 유실이 발생하면 유실된 패킷에 대한 ack(패킷을 받았다는 확인메시지)가 도착하지 않는다.
송신 측에서는 ack가 올 때까지 기다리지만, ack가 결국 오지 않으면 다시 패킷을 보내게 된다. 따라서 패킷이 유실 되었을 때 중간에 재전송 시간이 발생하게 된다.
UDP란?
UDP는 비연결형 프로토콜입니다.(연결을 위해 할당되는 논리적인 경로가 없고, 각각의 패킷은 다른 경로로 전송되며, 독립적인 관계)
UDP는 발신자가 데이터 패킷을 순차적으로 보내더라도 이 패킷들은 서로 다른 통신 선로를 통해 전달 될 수 있다.
먼저 보낸 패킷이 느린 선로를 통해 전송될 경우 나중에 보낸 패킷보다 늦게 도착할 수 있으며 최악의 경우 유실될 수도 있다.
(UDP는 중간에 패킷이 유실이나 변조되어도 재전송하지 않음)
- 비연결형 서비스로 데이터그램 방식을 제공
데이터의 전송 순서가 바뀔 수 있다 - 데이터의 수신여부를 확인하지 않는다
패킷 유실될 수 있다 - 신뢰성이 낮다
흐름제어가 없어서 제대로 전송이 되었는지, 오류가 없었는지 확인할 수 없다 - TCP보다 속도가 빠르다
흐름제어, 혼잡제어 등이 없기때문에 속도가 비교적 빠르고 네트워크 부하가 적다
신뢰성보다는 연속성이 있는 전송이 필요할 때 사용하는 프로토콜이다.(실시간 스트리밍 서비스)
출처 : https://dev-coco.tistory.com/144
https://hwan1402.tistory.com/91
'STUDY > CS' 카테고리의 다른 글
컴파일언어 인터프리터언어 (0) | 2023.03.23 |
---|---|
이터레이터(iterator), 제너레이터(generator) (1) | 2023.02.23 |
인덱스 (0) | 2023.01.19 |
HTTP 프로토콜 (0) | 2023.01.16 |
웹 서버와 WAS의 차이 (0) | 2023.01.16 |
댓글