TCP
TCP/IP
이전 게시물에서 설명했던 IP 프로토콜의 한계점인
- 데이터 유실과 손실에 대한 정보를 알 수 없는 점
- 보낸 순서대로 도착하지 않는 점
2021/01/13 - [WEB 기본 지식] - IP(인터넷 프로토콜)
2가지를 해결할 수 있는 방법 중 하나가 TCP 프로토콜을 사용하는 것이다. (UDP 로도 일부 해결됨)
IP 프로토콜의 패킷 구조가 출발지 IP, 목적지 IP, 내용이었다면,
출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등을 담은 TCP 세그먼트를 함께 사용하여 문제점을 보안할 수 있다.
TCP 특징
- 연결 지향 (TCP 3 way handshake를 통한 가상 연결)
- 데이터 전달 보증 (패킷 누락 정보 확인 가능)
- 순서 보장
TCP 3 way handshake
- 클라이언트와 서버 간의 가상 연결. 서로 통신이 가능한 상태인지 확인 후 데이터를 전송한다.
1. SYN (Synchronize) 요청을 통해 서버의 상태 확인
2. ACK(Amsterdam Compiler Kit) 응답 문자와 함께 클라이언트 상태 확인 요청을 전송
3. ACK(Amsterdam Compiler Kit) 응답문자 전송
4. 3 way handshake를 통해 가상연결(실제 물리적인 연결은 아니지만 논리적으로 연결이 되었다고 판단) 후 데이터를 전송
요즘은 최적화가 되어 '3. ACK(Amsterdam Compiler Kit) 응답문자 전송' 단계에서 '4. Data'를 함께 보낸다고 한다.
데이터 전달 보증
- 데이터 전송이 완료된 후 서버에서 클라이언트로 전송이 완료 된 사실을 알린다.
따라서, 전송이 잘 되었는지, 누락된 패킷 정보는 없는지 확인이 가능하다.
순서 보장
- 일반적으로는 패킷 1, 2, 3 이 있을 경우 1번 다음 3번 패킷이 도착하면 서버에서 클라이언트로 "헤이~ 2번 패킷이 안 왔어 2번 패킷부터 다시 보내" 라고 응답한다. 클라이언트는 잘못되었음을 확인하고 다시 2번 패킷부터 전송한다.
서버에서 최적화를 통해 순서를 조정할 수 도 있지만 일반적인 개념은 순서대로 받음
UDP
UDP 특징
- 기능이 거의 없음 (하얀 도화지 상태)
- 연결 지향이 아님
- 데이터 전달 보증 X. 순서 보장 X
- 단순하고 빠름
IP 프로토콜과 큰 차이가 없으며,
PORT와 체크섬 정도만 추가되었다고 생각하면 된다.
TCP와 UDP의 차이점과 장단점
거의 모든 네트워크 통신이 TCP로 이루어져 있으며, 많이 사용하는 프로토콜이다.
TCP의 최대 장점은 신뢰할 수 있는 프로토콜
하지만 3 way handshake 때문에 속도가 느리고, 전송 제어나 순서 보장, 검증 정보 등 데이터가 많기 때문에 데이터 양도 클 수밖에 없다.
반대로 UDP는 TCP 만큼 신뢰할 수 있는 프로토콜은 아니지만 어떻게 커스터마이징 하느냐에 따라 서버에서 최적화(기능 추가)가 가능하다는 장점이 있다. (TCP는 손대기 어려움)
'개발 지식 > WEB 기본 지식' 카테고리의 다른 글
HTTP 메시지 구조 (0) | 2021.01.30 |
---|---|
Stateful, Stateless (상태유지, 무상태) (0) | 2021.01.30 |
웹 브라우저 요청 흐름 (0) | 2021.01.24 |
IP(인터넷 프로토콜) (0) | 2021.01.13 |