TCP와 UDP: TCP/IP 4계층의 전송계층에서 사용되는 프로토콜, 전송계층에는 IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구등의 제어를 담당한다.
TCP의 가장 큰 특징은 신뢰성, 이러한 신뢰성을 구성해주는 방법으론 흐름제어, 혼잡제어, 오류제어가 있다.
수신측과 송신측의 데이터처리의 속도차이를 해결하기 위한 기법
송신측의 전송량이 수신측의 수신량보다 큰 경우 전송된 패킷은 수신측의 큐를 넘어서 손실될 수 있기 때문에 송신측의 패킷 전송량을 제어한다
매번 전송하는 패킷에 대해 확인 응답(ack)를 받으면 다음 패킷을 전송하는 방법
수신측에서 설정한 윈도우 크기만큼 송신 측에서 확인 응답 없이 패킷을 전송 할 수 있게하여 데이터 흐름을 동적으로 조절
송신측의 데이터 전달과 네트워크의 데이터 처리 속도를 해결하기 위한 기법
한 라우터에게 데이터가 몰려 모든 데이터를 처리할 수 없는 경우, 호스트들은 재전송을 하게 되고 결국 혼잡만 가중시켜 오버플로우나 데이터 손실이 발생한다
이런 네트워크의 혼잡을 피하기 위해 송신측에서 보내는 데이터의 전송 속도를 제어한다.
합증가/곱 방식, 처음에 패킷을 하나씩 보내고 문제없이 도착하면 윈도우의 크기를 1씩 증가시키며 전진
윈도우의 크기를 1,2,4,8...과 같이 지수적으로 증가 시키다가 혼잡이 감지되면 윈도우 크기를 1로 줄이는 방식
중복 ack를 3개 받으면 재전송
혼잡한 상태가 되면 윈도우 크기를 1로 줄이지 않고 반으로 줄이고 선형 증가 시키는 방법
오류검출(error detection)과 재전송(retransmission)을 포함
ARQ 기법을 활용하여 프레임이 손상되었거나 손실되었을 경우 재전송을 통해 오류를 복구
신뢰성이 요구되는 애플리케이션에서는 TCP를 사용, 간단한 데이터를 빠른속도로 전송하고자 하는 애플리케이션에서는 UDP를 사용한다.
TCP(Transfer Control Protocol) | UDP(User Datagram Protocol) |
---|---|
연결이 성공해야 통신가능(연결형 프로토콜) | 비연결형 프로토콜(연결없이 통신가능) |
데이터의 경계를 구분하지 않음 | 데이터의 경계 구분함 |
신뢰성 있는 데이터 전송(데이터 재전송 존재) | 비신뢰성 데이터 전송 |
일대일 통신 | 일대일, 일대다, 다대다 통신 |