Search

HTTP와 IP, TCP와 UDP

생성일
2023/07/26 04:07
태그

HTTP

HTTP는 Hyper Text Transfer Protocol의 약자로 서버와 클라이언트가 서로 데이터를 주고받기 위해 사용되는 통신 규약이다.
문서와 HTML, TEXT, 이미지, 음성, 영상, 파일, JSON, XML 등 거의 모든 형태의 데이터를 전송 가능하다.

HTTP 통신 구조

HTTP 통신은 클라이언트(Frontend)와 서버(Backend)의 구조로 되어있고, 클라이언트에서 서버에 요청을 보내면 서버에서 클라이언트로 응답을 보낸다.
클라이언트와 서버를 분리하는 이유는
클라이언트에서는 복잡한 비즈니스 로직을이나 데이터를 가공할 필요가 없고 UI를 그리는데 집중할 수 있고,
서버에서는 비즈니스 로직을 처리하거나 데이터를 가공하는데 집중할 수 있기 때문이다.
클라이언트와 서버의 독립적으로 구분하여 책임을 나눠 각자의 책임에 집중하여 각자 고도화 할 수 있다.

인터넷 프로토콜(IP, Internet Protocol)

인터넷 프로토콜(IP)은 데이터 패킷이 네트워크를 통해 이동하고 올바른 대상에 도착할 수 있도록, 데이터 패킷을 라우팅하고 주소를 지정하기 위한 프로토콜이다.
데이터 패킷 패키지(package)와 버킷(bucket)의 합성어로, 통신망을 통해 데이터를 전송하기 쉽도록 데이터를 자른 데이터 전송 단위이다.
인터넷에 연결하는 모든 장치나 도메인에는 IP 주소가 할당되어, 패킷이 IP 주소를 포함하고 있어 라우터에서 해당 정보를 통해 올바른 곳에 전송할 수 있다.
IP 주소 IP 주소는 인터넷에 연결하는 장치나 도메인에 할당된 고유 식별자로, IPv4와 IPv6가 있다.
이렇게 데이터 패킷에 IP 주소, 패킷 길이 등의 정보를 담고 있는 IP 헤더를 추가한 것을 IP 패킷이라 한다.
비신뢰성
흐름에 관여하지 않기 때문에 정보가 제대로 전송되었는지 보장하지 않는다. 전송 과정에서의 패킷 손상이나 유실, 패킷 순서가 섞이는 경우나 같은 패킷이 두 번 전송될 수 있다. 이러한 패킷 전송과 순서를 보장하기 위해서는 상위 프로토콜인 TCP와 같은 프로코톨을 사용하여야한다.
비연결성
패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다. 보내고자 하는 대상 서버가 패킷을 받을 수 있는 상태인지 아닌지 확인하지 않고 패킷을 전송한다.

TCP(Transmission Control Protocol)

TCP는 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜이다.
일반적으로 TCP는 IP와 같이 사용되어 TCP/IP로 불리는데, IP가 데이터 전송과 목적지에 올바르게 도착하도록 한다면 TCP는 패킷을 추적하고 순서를 보장한다.
데이터의 경계를 구분하지 않는다(바이트 스트림 서비스).
TCP는 3-way handshaking이라는 과정을 통해 확실히 연결되었음을 확인 후 통신한다.
3-way handshaking 3-way handshake 방식은 서로의 통신을 위한 포트를 확인하고 연결하기 위하여 3번의 요청/응답 후에 연결이 되는 것을 말한다. 이 과정에서 가장 많은 시간이 소요되어 TCP 방식이 UDP 방식보다 속도가 느려지는 주요 원인이다.
흐름 제어, 혼잡 제어 및 데이터 순서를 보장한다.
흐름제어와 혼합제어 흐름제어는 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우는 방지하는 것이다. 혼합제어는 네트워크 내의 패킷 수가 너무 많아지지 않도록 방지하는 것으로, 너무 많은 패킷을 보내 혼잡 붕괴 현상이 발생하는 것을 방지한다.
연속성보다 신뢰성이 중요한 서비스에서 자주 사용된다.

UDP(User Datagram Protocol)

UDP는 받는 측과의 연결 확인없이 일방적으로 데이터를 송신하는 비연결형 프로토콜이다.
TCP와는 다른게 연결 설정이 없고, 패킷 오버헤드가 적고 혼잡 제어를 하지 않기 때문에 속도가 빠르다.
데이터 경계를 구분한다(데이터그램 서비스).
데이터 전송에 대한 보장이 없기 때문에 패킷 손실이 발생할 수 있다.
UDP 헤더의 CheckSum 필드를 통해 최소한의 오류 검출만 한다.
신뢰성보다 연속성이 중요한 서비스에서 자주 사용된다.

TCP vs UDP

TCP와 UDP 모두 헤더에 송수신자의 포트 번호를 포함하고 있다.

TCP/IP 데이터 전송 과정