TCP/IP 간단 요약
TCP/IP 는 인터넷으로 통신할 때 주로 TCP와 IP가 묶인 패킷이 사용된다고 해서 붙여진 이름이다. 통신을 원하는 애플리케이션이 메세지를 만들면 TCP로 포장되어 세그먼트가 되고 다시 한번 IP로 포장되어 패킷이 된다.
헷갈리는 개념 우선 정리
HTTP는 stateless, 즉 클라이언트와 서버가 요청 - 응답 후 연결을 끊는다. 아래에 설명할 IP, TCP에 연결형, 비연결성이 나오는데 이는 3way handshake로 동작하냐 아니냐로 이해해야한다. http의 연결과 다른 것이다.
정확히는 http는 stateless 지향적으로 설계되어야 한다.
IP
Internet Protocol
Network Layer
만약 IP만으로 통신한다면?
- 비연결성: 응답을 받을 수 있는 가를 판단하지 않고 우선 통신한다.
- 비신뢰성: 패킷이 유실되어도 알 수 없고, 패킷마다 다른 경로로 라우팅되었을 때 순서가 꼬일 수 있다.
- 하나의 IP주소에 여러 애플리케이션이 사용될 때, 어떤 애플리케이션에 대한 요청인 지를 알 수 없다.
TCP
Transmission Control Protocol
Transport Layer
위의 문제점을 해결할 수 있는 TCP의 특징은
- 연결형: 3way handshake를 통해 서버가 응답할 수 있는 상태임을 확인한다.
- 같은 IP주소라도 port를 통해 수신/목적 애플리케이션을 구분하도록 한다.
- 순서 제어를 통해 요청에 대한 서로 다른 패킷이 최적화된 라우팅 경로로 흩어져도 정상적으로 통신이 되게 한다.
3way handshake
- 클라이언트가 서버로 syn(안녕?)를 보낸다.
- 서버가 클라이언트의 syn에 대한 ack(반가워)와 syn를 응답한다.
- 클라이언트는 서버의 syn에 대한 ack로 응답하여 연결한다.
syn(싱크), Synchronization
ack(액크), Acknowledgement
UDP
User Datagram Protocol
Transport Layer
IP에 port와 checksum이 추가된 프로토콜. 모든 패킷이 TCP로 포장되어 있는 것은 아니다.
애플리케이션에서 여러 요소를 추가하여 통신한다. 목적에 맞는 다양한 형태가 존재할 수 있다.
TCP의 3way handshake를 사용하면 매번 통신할 때마다 고정된 syn, syn+ack, ack 요청 응답이 이루어지므로 비효율적이다. UDP는 비연결형으로 빠르게 통신할 수 있다는 장점이 있다. HTTP 3.0에서는 UDP 기반으로 통신한다.
물론 HTTP 1.1이 가장 많이 사용된다.
'컴퓨터과학' 카테고리의 다른 글
도커란? (0) | 2023.06.26 |
---|---|
HTTP 헤더란? (0) | 2023.06.11 |
API 요청에서 path, query, body의 차이점 (0) | 2023.06.10 |
HTTP status code는 각각 언제 사용될까? (0) | 2023.06.10 |
Ubuntu 22.04 desktop 설치 (1) | 2023.06.04 |