TCP / UDP 란?
: 전송계층에서 사용하는 프로토콜로써, 목적지 장비까지 전송한 패킷을 상위의 특정 응용 프로토콜에게 전달하는 것에 목적이 있습니다.
전송방식으로는 TCP와 UDP가 있습니다.
전송계층이란? 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층으로, 쉽게 말해 데이터의 전달을 담당합니다.
TCP ( Transmission Control Protocol ) 란?
: 연결형 서비스를 지원하는 전송 계층 프로토콜로써, 인터넷 환경에서 기본으로 사용합니다.
호스트간 신뢰성 있는 데이터 전달과 흐름제어를 합니다. 즉, 인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
입니다. 일반적으로 TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리하게 됩니다.

네트워크 프로토콜 계층은 다음과 같이 OSI 7계층과 TCP/IP 4 계층으로 나눌 수 있습니다.
IP 프로토콜 보다 더 높은 계층에 TCP 프로토콜이 존재하기 때문에 앞서 다룬 IP 프로토콜의 한계를 보완할 수 있습니다.
* TCP/IP 4 계층은 OSI 7 계층보다 먼저 개발되었으며 TCP/IP 프로토콜의 계층은 OSI 모델의 계층과 정확하게 일치하지는 않습니다

채팅 프로그램에서 메시지를 보낼 때 어떤 일이 일어나는지 자세히 알아봅시다.
먼저 HTTP 메시지가 생성되면 Socket 라이브러리를 통해 전달됩니다. 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, “네트워크 환경에 연결할 수 있게 만들어진 연결부“가 바로 네트워크 소켓(Socket)입니다. 그리고 IP 패킷을 생성하기 전 TCP 세그먼트를 생성합니다. 이렇게 생성된 TCP/IP 패킷은 LAN 카드와 같은 물리적 계층을 지나기 위해 이더넷 프레임 워크에 포함되어 서버로 전송됩니다.

TCP 특징
1. 연결형 서비스로 가상 회성 방식을 제공한다.(TCP 3 way handshake 가상연결)
2. 데이터의 경계를 구분하지 않는다.
3. 데이터의 전송 순서 보장한다.
4. UDP보다 전송속도가 느리다.
5. 신뢰성있는 데이터를 전송한다.(프로토콜)

위 그림처럼
만약 패킷이 순서대로 도착하지 않는다면 TCP 세그먼트에 있는 정보를 토대로 다시 패킷 전송을 요청할 수 있습니다. 이를 통해 IP 패킷의 한계인 비신뢰성(순서를 보장하지 않음)을 보완할 수 있습니다.

TCP는 장치들 사이에 논리적인 접속을 성립하기 위하여 3 way handshake를 사용하는 연결지향형 프로토콜입니다.
연결 방식은 다음과 같습니다.
먼저 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보냅니다.
서버는 SYN요청을 받고 클라이언트에게 요청을 수락한다는 ACK 와 SYN가 설정된 패킷을 발송하고 클라이언트가 다시 ACK으로 응답하기를 기다립니다.
클라이언트가 서버에게 ACK을 보내면 이 이후로부터 연결이 성립되며 데이터를 전송할 수 있습니다.
만약 서버가 꺼져있다면 클라이언트가 SYN을 보내고 서버에서 응답이 없기 떄문에 데이터를 보내지 않습니다.
현재에는 최적화가 이루어져 3번 ACK을 보낼때 데이터를 함께 보내기도 합니다.
* SYN은 Syncronize, ACK는 Acknowledgment의 약자
UDP
: 비연결형 서비스를 지원하는 전송계층 프로토콜로써, 인터넷상에서 서로 정보를 주고받을 때 정보를 보낸다는 신호나 받는다는 신호 절차를 거치지 않고,보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜입니다.
데이터를 데이터그램 단위로 처리하는 프로토콜입니다
* 데이터그램이란? 독립적인 관계를 지니는 패킷이라는 뜻입니다.
그림으로 비교하는 TCP vs UDP
먼저, TCP의 데이터 송신 과정을 살펴보자.

반면, UDP는 일방적이다.

즉, 신뢰성이 요구되는 애플리케이션에서는 TCP를 사용하고 간단한 데이터를 빠른 속도로 전송하고자 하는 애플리케이션에서는 UDP를 사용한다.
표로 비교하는 TCP vs UDP
TCP UDPConnection-oriented protocol (연결지향형 프로토콜) |
Connection-less protocol (비 연결지향형 프로토콜) |
Connection by byte stream (바이트 스트림을 통한 연결) |
Connection by message stream (메세지 스트림을 통한 연결) |
Congestion / Flow control (혼잡제어, 흐름제어) |
NO Congestion / Flow control (혼잡제어와 흐름제어 지원 X) |
Ordered, Lower speed (순서 보장, 상대적으로 느림) |
Not ordered, Higer speed (순서 보장되지 않음, 상대적으로 빠름) |
Reliable data transmission (신뢰성 있는 데이터 전송 - 안정적) |
Unreliable data transmission (데이터 전송 보장 X) |
TCP packet : Segment (세그먼트 TCP 패킷) |
UDP packet : Datagram (데이터그램 UDP 패킷) |
HTTP, Email, File transfer 에서 사용 |
DNS, Broadcasting (도메인, 실시간 동영상 서비스에서 사용) |
공통점
TCP(Transfer Control Protocol) | UDP(User Datagram Protocol)포트 번호를 이용하여 주소를 지정 |
데이터 오류 검사를 위한 체크섬 존재 |
차이점
TCP(Transfer Control Protocol)UDP(User Datagram Protocol)연결이 성공해야 통신 가능(연결형 프로토콜) | 비연결형 프로토콜(연결 없이 통신이 가능) |
데이터의 경계를 구분하지 않음(Byte-Stream Service) | 데이터의 경계를 구분함(Datagram Service) |
신뢰성 있는 데이터 전송(데이터의 재전송 존재) | 비신뢰성 있는 데이터 전송(데이터의 재전송 없음) |
일 대 일(Unicast) 통신 | 일 대 일, 일 대 다(Broadcast), 다 대 다(Multicast) 통신 |

- 비연결형 서비스로 연결 없이 통신이 가능하며 데이터그램 방식을 제공한다.
- 데이터 경계를 구분한다. (데이터그램(datagram) 서비스)
- 정보를 주고 받을때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
- 신뢰성 없는 데이터를 전송한다. (데이터 재전송과 데이터 순서 유지를 위한 작업을 하지 않는다.
- 패킷관리가 필요하다.
- 패킷 오버헤드가 적어 네트워크 부하가 감소되는 장점.
- 상대적으로 TCP보다 전송속도가 빠르다.
'네트워크' 카테고리의 다른 글
HTTP 표현 헤더 (0) | 2022.02.14 |
---|---|
HTTP (0) | 2022.02.14 |
HTTPS 대칭키 암호화, 비대칭키 암호화 (0) | 2022.02.14 |
HTTP 와 HTTPS 차이 (0) | 2022.02.14 |
IP와 IP Packet (0) | 2022.02.14 |