HTTP('a' 메시지 생성) ➡️ (SOCKET을 통해 전달) ➡️ TCP ➡️ (TCP 정보 생성, 메시지 데이터 포함) ➡️ IP ➡️ (IP 패킷 생성, TCP 데이터 포함) ➡️ Ethernet Frame ➡️ SERVER
✅ SOCKET : 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, 네트워크 환경에 연결할 수 있게 만들어진 연결부
✅ TCP/IP 패킷 : IP 패킷 / TCP 세그먼트 / 전송데이터
-IP 패킷 : 출발지 IP, 목적지 IP
-TCP 세그먼트 : 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등
💡 전송 제어 프로토콜(Transmission Control Protocal)
📗 연결 지향
TCP 3 way handshake
1️⃣ 클라이언트 ➡️ ( SYN ) ➡️ 서버
2️⃣ 클라이언트 ⬅️ (SYN+ACK) ⬅️ 서버
3️⃣ 클라이언트 ➡️ ( ACK ) ➡️ 서버
✳️ Established(데이터 전송 가능)
✅ SYN : 접속을 요청하는 패킷
✅ ACK : 요청을 수락하는 패킷
🚫 서버가 꺼져있다면 클라이언트가 SYN을 보내고 서버에서 응답을 받지 못하므로 데이터를 전송하지 않음
📗 데이터 전달 보증
데이터 전송이 성공적으로 이루어진다면 응답을 돌려주므로 IP 패킷의 한계인 비연결성을 보완
📗 순서 보장
순서대로 도착하지 않는다면 TCP 세그먼트에 있는 정보를 토대로 재요청 가능
IP 패킷의 한계인 비신뢰성 보완
💡 사용자 데이터그램 프로토콜(User Datagram Protocal)
💡 IP에 PORT, 체크섬 필드 정보만 추가된 단순한 프로토콜
📗 비연결지향
데이터 전달 보증도 되지 않고 순서도 보장되지 않지만 속도가 빠름
📗 커스터마이징 가능
기능이 거의 없음
HTTP3는 UDP를 사용
📗 빠른 속도
신뢰성보다는 연속성(실시간 스트리밍)이 중요한 서비스에서 사용