사진 출처 : https://www.geeksforgeeks.org/differences-between-tcp-and-udp/
TCP
- Transmission Control Protocol
- 적절한 애플리케이션 데이터를 전달하기 위해 이용되는 프로토콜
- IP, HTTP, FTP, SMTP 등과 같이 프로토콜의 일종이다.
MSS (Maximun Segment Size)
TCP 헤더 포맷의 요소
- 여기서 헤더란? 데이터 본체와는 별도로 데이터의 맨 앞에 추가되는 정보이다. 그리고 TCP 헤더를 추가한 애플리케이션 데이터를 TCP 세그먼트라고 부른다.
TCP 연결의 성립과 종료
- TCP에서 TCP헤더 정보를 어떻게 사용하여 데이터를 전송할까?
TCP 데이터 전송
- TCP 연결의 성립과 종료
- 데이터 전송 시의 동작
TCP 연결 성립
- TCP는 애플리케이션 간의 신뢰성 있는 데이터 전송을 수행하기 위해 3 way handshake 기업을 사용한다.
- 말 그대로 세번 인사한다는 뜻
3 way handshake
- 연결 요구(SYN 플래그) : 연결해도 되니?
- 응답(SYN/ACK 플래그) : 응, 나도 연결할게
- 응답(ACK 플래그) : 나도 오케이
- 이 3단계를 거침으로써 쌍방향 연결을 성립시키는 것으로 TCP를 연결형 프로토콜이라고도 한다.
TCP 연결 종료
- 세그먼트 4개가 오고감
- A 종료 요구(FIN/ACK 플래그) :연결 종료해도 되니?
- B 종료 요구 확인(ACK 플래그) : 응, 고럼고럼
- A 자신도 연결을 종료하겠다는 의사(FIN/ACK 플래그) : 나도 연결 종료할게
- B 종료 요구 확인(ACK 플래그) : 그랭
데이터 전송 시의 동작
- TCP는 윈도우제어, 재전송 제어, 혼잡 제어와 같은 제어 기능을 구사하여 확실하고 효율적인 데이터를 전송한다.
윈도우 제어
- 얼만큼의 TCP 세그먼트를 한 번에 보낼 것인가를 제어하는 시스템
- 슬라이딩 윈도우 방식이라고도 불림
- 윈도우 제어에서 TCP 세그먼트 여러 개를 보내다 보면 수신하는 쪽에 도착하는 순서가 바뀔 가능성도 생긴다. 이럴 경우 순서 제어 시스템을 수행하여 TCP 헤더의 시퀀스 번호를 이용한다.
- 시퀀스 번호는 송신 데이터의 순서를 가리키는 번호!
재전송 제어
- TCP 세그먼트가 네트워크 상에서 전송될 때 데이터가 유실되는 경우도 발생하는데 이때 유실된 TCP 세그먼트를 재전송하는 시스템이다.
- TCP 세그먼트를 송신했을 때 RTO(Retransmission Time Out)시간 이내에 확인 응답을 받아야하는 규칙이 있다. RTO 시간 이내에 확인 응답을 받지 못하면 데이터가 유실 된 것을 판단되어 재전송 제어에 의해 TCP 세그먼트가 재전송 된다.
- RTT(Round Trip Time) : TCP 세그먼트의 확인 응답이 돌아오기 까지의 시간
재전송 타임아웃 발생하는 3가지 원인
- TCP 세그먼트 유실
- 확인 응답 유실
- TCP 세그먼트, 확인 응답의 전송이나 처리에 시간이 너무 오래 걸림
혼잡 제어
- TCP 세그먼트가 유실되는 원인은 대부분 네트워크 혼잡에 있다.
- 혼잡 제어는 네트워크 혼잡을 회피하는 것
- 혼잡 제어에는 다양한 방식이 있다.
슬로우 스타트 알고리즘 방식
- 맨 처음 송신하는 쪽에서 혼잡 윈도우(송신하는 쪽에서 한번에 보내는 데이터의 양)를 1로 설정할 때 수신하는 쪽의 윈도우 사이즈 만큼의 데이터를 가지고 한꺼번에 보내는 것이 아니라, 확인 응답이 돌아오면 혼잡 윈도우를 1씩 늘이는 방식이다. 한번에 송신하는 데이터의 양을 서서히 늘려가며 전송한다.
- 혼잡 제어는 재전송 타임아웃이 발생했을 때 TCP 세그먼트 재전송에도 사용된다.
UDP
- User Datagram Protocol
- TCP 처럼 포트 번호에 따라 적절한 애플리케이션에 데이터를 전달하기 위한 프로토콜
- UDP는 TCP와 달리 데이터 전달말고는 아무것도 하지않는다.
- 단지 데이터를 전달하는 것이 목적인 UDP
- UDP 데이터그램
- TCP 헤더는 표준 20바이트지만 UDP헤더는 8바이트이기 때문에 오버헤드가 적으므로 TCP보다 통신 효율이 높아짐
UDP 용도
- 실시간 데이터를 전송할 때
- 여러 상대에게 같은 내용의 데이터를 전송할 때
- 데이터 전송 시 신뢰성이 필요하지 않은 소량의 데이터를 전송할 때
실시간 데이터를 전송할 때
- VoIP(Voice over IP) : IP 네트워크상에서 음성을 IP 패킷으로 주고받는 기술, IP 전화에 주고받는 기술이라 생각하기
- VoIP 패킷은 지연에 민감함으로 TCP 같은 연결의 성립이나 확인 응답 시스템은 오버헤드일 뿐이다. 신뢰성이 낮더라도 빠르게 데이터를 전송하는 것이 목적! 유실되더라도 음성이 약간 끊길 뿐임
여러 상태와의 통신
- TCP에서는 브로드캐스트, 멀티 캐스트 통신이 불가하다.(TCP는 유니캐스트 통신만 가능)
- 화상회의 애플리케이션 등에 UDP를 주로 사용함
소량의 데이터를 빈번히 주고 받을 때
TCP와 UDP 비교
- 각각의 특징과 주요 기능, 용도에 대해 알아두는 것이 중요!
출처: 손으로 배우며 익히는 네트워크 첫걸음