모든 개발자를 위한 HTTP 웹 기본 지식 sec01
출처 : 모든 개발자를 위한 HTTP 웹 기본 지식
🌐인터넷 네트워크
인터넷 프로토콜 스택의 4계층


인터넷 통신
클라이언트가 요청을 하면 서버가 응답을 해줌
그 사이에 인터넷이 매개채의 역할을 함
IP(Internet Protocol)
지정한 IP주소(ex: 100.100.100.1)에 데이터 전달
패킷(package + bucket)이라는 통신 단위로 데이터 전달
IP 패킷?
전송데이터 밖에 출발지IP, 목적지IP를 적어주어야함
⛔IP 프로토콜의 한계
- 비연결성
패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
패킷이 중간에 사라지거나, 순서대로 오지 않을 경우 해결이 안됨
- 프로그램 구분
같은 IP를 사용하는 서버에 통신하는 애플리케이션이 둘 이상일 경우 구분이 안 됨
TCP, UDP
TCP(전송 제어 프로토콜, Transmission Control Protocol)
TCP/IP 패킷 안에는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보
- 연결지향 -> TCP 3 way handshake(가상 연결)

🚨진짜 연결이 된거는 아님!
개념적으로만 연결됨! (SYN과 ACK를 주고 받으면서 서로 연결이 됬구나 논리적으로 연결된 느낌!)
- 데이터 전달 보증
서버에서 데이터를 잘 받았다고 알려줌!
- 순서 보장
1,2,3 순서로 보냈는데 1,3,2 순서로 오면 2번 부터 다시 보내라고 서버에서 요청
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
UDP(사용자 데이터그램 프로토콜, User Datagram Protocol)
- 하얀 도화지 비유(기능 거의 ❌)
- 연결지향, 데이터 전달 보증, 순서 보장 ❌
- 단순하고 빠름
- IP와 거의 동일 +PORT, 체크섬 추가된 정도
- 애플리케이션에서 추가 작업 필요
PORT
IP : 목적지 서버를 찾는 것, 아파트
PORT : 서버 안에서 돌아가는 애플리케이션을 구분하는 것, 몇 동 몇 호
0 ~ 65535 할당 가능, BUT! 0 ~ 1023은 잘 알려진 포트로 사용하지 않는 것이 좋음
DNS(도메인 네임 시스템, Domain Name System)
IP는 기억하기 어렵고 변경될 수 있음
도메인 명을 IP주소로 변환, 전화번호부
