HTTP는 HyperText Transfer Protocol의 약자로,
웹에서 클라이언트(브라우저 등)와 서버 간에 데이터를 주고받기 위한 통신 규약(Protocol)이다.
쉽게 말하면 웹에서 문서, 이미지, 영상 등을 요청하고 응답받기 위한 약속된 통신 방법.
HTTP는 요청-응답을 기반으로 하기 때문에 HTTP의 메시지 형태도 요청/응답 2가지 이다.
클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조
HTTP Request Message

HTTP Response Message

https://developer.mozilla.org/ko/docs/Web/HTTP/Guides/Messages
IP는 컴퓨터(호스트)들 사이에서 데이터 패킷을 목적지까지 전달하는 역할을 하는 인터넷 계층의 핵심 프로토콜이다.
IP의 핵심 역할
IP는 데이터를 여러 네트워크를 거쳐 목적지까지 전달함.
중간에 라우터(router)가 경로를 결정하고, 패킷을 넘겨줌.
IP는 전달만 해줄 뿐, 순서를 보장하지 않음.
중간에 패킷이 유실될 수도 있음
중복되거나 깨져도 복구 안 해줌
이건 TCP가 처리해줘야 하는 영역임!
IP 주소 체계
IPv4
32비트 주소 (총 2³² = 약 43억 개)
형식: 192.168.0.1
IPv6
128비트 주소 (엄청 많음… 340 언쩌구 x 10³⁶ 개)
형식: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
신뢰성 있는 데이터 전송을 보장하는 전송 계층(Transport Layer)의 대표적인 프로토콜. 데이터를 정확하고 순서대로 전송하는 데 최적화되어 있다.
TCP의 핵심 특징
연결 지향(Connection-Oriented)
데이터를 보내기 전, 3-way handshake로 연결을 먼저 설정함
신뢰성 보장(Reliability)
데이터 유실 시 재전송, 순서 보장, 중복 제거
흐름 제어(Flow Control)
수신 측의 수용 능력을 고려해 전송량 조절
혼잡 제어(Congestion Control)
네트워크 상태에 따라 전송 속도 조절
빠르게 데이터를 전송하고 싶은 상황에서 사용하는 전송 계층(Transport Layer)의 대표적인 프로토콜
3-way handshake를 통해 연결 지향적인 통신을 하는 TCP와 달리 비연결성이라는 특징을 띈다. 클라이언트에서 서버로 마구 데이터를 보내는 것이다(받았다는 응답이 없어도).
이런 특성때문에 속도가 중요하고 약간의 데이터 손실은 크게 상관이 없는 통화나 스트리밍 서비스에 많이 사용되는 프로토콜이다.
네트워크에서 통신하는 두 개의 프로그램 간의 연결을 설정하고 데이터를 전송하기 위한 인터페이스.
IP주소와 포트 번호를 사용하여 네트워크 상의 특정 컴퓨터와 특정 서비스에 연결된다
소켓 통신
소켓을 이용하여 두 프로그램(서버-클라이언트) 간에 데이터를 주고 받는 과정. TCP와 UDP같은 네트워크 프로토콜을 사용
소켓은 프로토콜,IP주소,포트 넘버로 정의된다.

클라이언트가 전송해주는 데이터를 그대로 되돌려 전송해 주는 기능을 가진 서버를 말한다.
데이터를 그대로 되돌려 받기 때문에 클라이언트와 서버가 제대로 연결됐는지 테스트 용도로 많이 쓰인다.
통신이 일어날 때 항상 요청을 시작하는 쪽은 클라이언트, 응답을 처리하는 쪽은 서버
언듯 비슷한 개념 같지만 그 역할과 범위가 다르다.
클라이언트와 서버 사이에 데이터를 주고받기 위한 통신 통로가 만들어진 것.
ex) TCP 3-way handshake를 통한 연결
ex) 로그인 세션, 채팅 세션
Unicast
Broadcast
Multicast