-
[Network] TCP vs UDPCS/Network 2021. 9. 28. 23:30
이 포스팅은 세미나를 위해 https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network를 참고하여 작성하였습니다.
TCP(Transmission Control Protocol)
TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜로서, 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스 이다. TCP는 네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 바이트 스트림을 안정적으로, 순서대로, 에러없이 전송할 수 있게 한다.
특징
- 연결형 서비스: 가상 회선 방식 제공
- 3-way handshake를 통해 연결 성립(Establishment)
- 4-way handshake를 통해 연결 해제(Termination)
- 흐름제어(Flow Control): 데이터 전송 속도를 조절하여 수신자 버퍼의 오버플로우를 방지
- 수신자가 윈도우 크기(Window size) 값을 통해 수신량을 정할 수 있다.
- 혼잡제어(Congetion Control): 데이터 전송 속도를 조절하여 네트워크의 부하 조절 (네트워크 부하가 심해지면 Packet delay, loss가 발생할 수 있음)
- 신뢰성 높은 전송(Reliable Transmission)
- Dupack-based retransmission: ACK이 연속적으로 오지 않고 중복으로 올 경우 패킷 이상을 감지하고 재전송을 요청한다.
- Timeout-based retrasmission: 일정 시간동안 ACK이 수신 되지 않을 경우 재전송을 요청한다.
- Full-Duplex, Point-to-Point
- Full-Duplex: 전송이 양방향으로 동시에 일어날 수 있다.
- Point-to-Point: 각 연결이 정확히 2개의 종단점을 가지고 있다.
→ 멀티캐스팅이나 브로드캐스팅을 지원하지 않는다.
TCP Header
UDP(User Datagram Protocol)
UDP는 데이터를 데이터그램 단위로 처리하는 프로토콜이다. 데이터그램이란, 독립적인 관계를 지니는 패킷이라는 뜻이다. UDP는 TCP와 달리 비연결형 프로토콜이기 때문에 연결을 위해 할당된 논리적인 경로가 없다. 그렇기 때문에 각각의 패킷은 다른 경로로 전송되고, 독립적인 관계를 가지게 된다.
특징
- 비연결형 프로토콜
- 흐름제어, 오류제어, 손상된 세그먼트의 수신에 대한 재전송을 지원하지 않는다.
- 코드가 간단하고 TCP처럼 초기설정(initial setup)이 필요없기 때문에 상대적으로 빠르다.
- DNS에서 사용됨
UDP Header
TCP vs UDP
Reference
https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4
'CS > Network' 카테고리의 다른 글
[Network] DNS 동작 원리 (0) 2021.09.29 [Network] HTTP vs HTTPS (0) 2021.09.29 [Network] TCP 연결과 해제 (0) 2021.09.28 [Network] HTTP Methods - GET, POST, PUT, PATCH, DELETE (0) 2021.09.27 [Network] Cookie와 Session (0) 2021.09.15 - 연결형 서비스: 가상 회선 방식 제공