TCP (Transmission Control Protocol)
전송 제어 프로토콜
특징
1. 연결 지향형 성격을 지니고 있다.
-> 즉 서로 간의 연결을 지향한다는 의미. 신뢰성을 보장하기 위한 방법
2. 연결을 위해 추가 작업이 필요하다.
-> 3-way-handshake, 4-way-handshake를 통해 연결, 해제 작업을 진행한다.
3. 신뢰성을 보장한다.
-> 연결 작업을 통해 패킷 전송을 제어하여 기존 IP의 문제점인 데이터 유실, 순서 꼬임의 문제를 해결하였다.
4. UDP에 비해 속도가 느리다.
-> 추가적인 연결 작업을 진행해서 신뢰성을 챙기다 보니 UDP와 비교하면 속도가 느리다.
OSI 7계층의 순서에 따라 데이터 송신, 수신을 진행하게 된다. 여기서 TCP는 4계층(전송 계층), IP는 3계층(네트워크 계층)이며 TCP의 기본 단위는 세그먼트(Segement), IP의 기본 단위는 패킷(Packet)이다.
위 사진은 하나의 전송 데이터를 그림으로 표현하고 있다.
데이터를 TCP 세그먼트로 한번 감싼 이후, 네트워크 계층을 거쳐 IP 패킷으로 한번 더 감싸게 된다.
해당 데이터를 보면 출발지 IP, 목적지 IP를 통해 출발 주소와 목적지 주소를 알 수 있으며, 출발지 PORT, 목적지 PORT를 통해 해당 IP 주소의 더 상세한 포트 번호(위치)를 알 수 있다. 또한 검증 정보, 순서 등 데이터의 신뢰성을 보장하기 위한 메타 데이터를 통해 송신하고자 하는 데이터를 수신측에서 안전하게 받을 수 있게 된다.
연결 지향 방식
TCP의 가장 큰 특징을 하나 꼽자고 하면 연결 지향 방식을 사용한다는 것이다. 송신자와 수신자가 1:1로 연결 상태를 유지하면서 통신하는 것을 의미하는데, 3-Way-Handshake를 통해 연결 진행을, 4-Way-Handshake를 통해 연결 해제를 진행하며 데이터를 조금 더 안전하고 신뢰할 수 있게 주고 받는다.
TCP 헤더
Source port : 송신하는 측의 포트 번호
Destination port : 수신하는 측의 포트 번호
Sequence number : 이름 그대로 순서 번호이다. 만약에 데이터를 전송하다가 데이터의 순서가 뒤바뀌는 일이 발생한다면 수신 측에서는 해당 Sequence number를 보고 데이터 재 조립을 진행하게 된다.
Flags(Control Fields) : TCP에서 사용되는 다양한 플래그를 의미한다. SYN, ACK, FIN도 여기에 포함되어 있다.
Checksum : 데이터 송신 도중 발생될 수 있는 비트 오류를 검출한다.
만약에 A 데이터, B 데이터의 체크섬이 15가 나오면 해당 체크섬을 같이 전달한다. 수신 측에서는 데이터와 체크섬을 같이 받아서 동일하게 A 데이터, B 데이터의 체크섬을 계산한다. 여기서 수신 받은 15라는 값이 나오면 데이터에 문제가 없다고 판단.
UDP (User Datagram Protocol)
사용자 데이터그램 프로토콜
데이터그램 : 사용자가 전달하고자 하는 데이터를 네트워크로 전송하기 위해, 통신 정보 등을 담은 헤더를 씌운 독립적인 패킷을 말한다.
특징
1. 비연결 성격을 지니고 있다.
-> 서로 간의 연결은 필요 없다. 송신 측에서 수신 측을 생각하지 않고 그냥 데이터를 뿌리는 형태.
2. 더 빠르고 효율적이다.
-> TCP 처럼 연결을 진행하는 과정이 없기에 빠르고 효율적이라고 말할 수 있다.
3. 신뢰성이 떨어진다.
-> 연결 비 지향적이기 때문에 데이터가 제대로 전송되었는지, 문제가 없는지 확인하지 않는다. 그래서 수신측에서는 어느 정도의 데이터 손실, 중복을 허용해야 한다.
비연결 지향 방식
TCP에서는 연결 지향 방식이 대표적인 특징이었다면 UDP는 그와 반대인 비연결 지향 방식이 특징이다.
연결 수립 과정, 해제 과정이 없기에 시간을 훨씬 단축시킬 수 있다는 특징이 있다. UDP의 대표적인 사용처는 실시간 스트리밍을 뽑을 수 있다.
UDP 헤더
UDP 헤더는 TCP 헤더와 다르게 더 간단하게 구성되어 있다.
TCP와 동일하게 체크섬이 존재하기에 데이터의 신뢰성을 보장하는 거 아닌가? 라고 생각할 수 있다.
그러나 TCP와는 다르게 체크섬 불일치가 발생해도 재전송을 요청하지 않고, 데이터를 폐기하는 방식으로 진행한다.(즉 복구를 진행하지 않는다.)
또한 데이터그램은 독립적인 패킷이라고 설명했다. 즉 독립적이기에 헤더 자체에는 순서와 관련된 정보가 존재하지 않는다. 그 말의 의미는 수신 측에서 알아서 순서를 재조립해야 한다. 또한 중간에 패킷이 손실된다고 해도 손실을 알아낼 방법이 존재하지 않는다. 그렇기에 수신측에서는 어느정도의 데이터 중복, 손실 문제를 허용해야 하는 것이다.
참고
https://www.cloudflare.com/ko-kr/learning/ddos/glossary/user-datagram-protocol-udp/
https://wormwlrm.github.io/2021/09/23/Overview-of-TCP-and-UDP.html
10분 만에 훑어보는 TCP와 UDP - 재그지그의 개발 블로그
OSI 4계층에서 동작하는 TCP와 UDP의 특징과 차이점에 대해 간략히 정리해봅니다.
wormwlrm.github.io
https://nordvpn.com/ko/blog/tcp-udp-comparison/
TCP UDP 차이: 두 프로토콜 비교 | NordVPN
이 글에서 TCP와 UDP 프로토콜의 차이점과 작동 방식, 각각의 이점을 자세히 알아보세요.
nordvpn.com
'CS지식' 카테고리의 다른 글
SOP 정책 (Feat, CORS 및 Preflight) (0) | 2024.05.25 |
---|---|
4-way handshake(feat, TCP 연결 해제) (1) | 2024.05.21 |
HTTP/1.1과 HTTP/2의 차이점 (0) | 2024.05.17 |
HTTP 응답(상태) 코드에 대한 정리 (0) | 2024.05.16 |