인터넷 네트워크
인터넷 프로토콜의 4계층
4층 - 애플리케이션계층 : HTTP,FTP
3층 - 전송 계층 : TCP, UDP
2층 - 인터넷 계층 : IP
1층 - 네트워크 인터페이스 계층
프로토콜
IP
- IP 주소에 패킷이라는 통신 단위로 데이터 전달.
패킷정보
한계점
- 서비스가 불능이여도 패킷 전송,
- 패킷이 사라질 수 있고, 순서대로 오지 않을 수도 있음
- 같은 IP에서 여러개의 앱을 사용하는 경우 어디로 도착할지 구분하기 어려움.
TCP/IP
- IP 방식의 한계점을 극복한 프로토콜, 대부분의 애플리케이션에서 사용하는 프로토클
- TCP 3 Way handshake - 가상연결 : 연결이 되었는 지 확인하고 데이터를 보냄
- 데이터 전달 보증 : 데이터를 받았는 지 받은 서버가 이야기 함.
- 순서 보장 : 순서가 잘 못되면 받은 서버에서 재전달 요청을 보냄
패킷정보
- 출발지 IP, 목적지 IP,
- 전송 데이터
- 출발지 port, 목적지 port
- 전송 제어, 순서, 검증 정보
UDP
- IP 와 거의 같음
- 포트, 체크섬이 추가된 개념
- 필요하면 애플리케이션내에서 UDP 를 수정/확장할 수 있고 TCP 3 Way handshake 최적화 등이 필요할 때 여기서 수정함.
port
- 같은 IP 내에서 프로세스를 구분하는 것.
- 0 ~ 65535 : 할당가능
- 0 ~ 1023 : 잘 알려진 포트 ,사용하지 않는 것이 좋음
- 20, 21 : FTP
- 23 : TELNET
- 80 : HTTP
- 443 : HTTPS
DNS (Domain Name System)
- IP 에 이름을 부여하여 DNS 서버에 저장.
URI
형식
scheme://[userinfo@]host[:port][/path][?query][#fragment]
- scheme : 주로 프로토콜 사용
- userinfo : url 에 사용자 정보를 포함할 때 사용하나 거의 사용하지않음
- host : 도메인명, ip명
- port : http/https 는 port 생략 가능
- path : 리소스가 있는 경로
- query
- key-value 형태,
- ? 로 시작하고 &로 추가 가능
- query paramether/query string 으로 불림
- fragment
- 잘 사용하지 않음
- HTML 내부 북마크 등에서 사용하고 서버에 전송되지 않음
웹 브라우저 요청 흐름
https://google.com
- 브라우저에 URL 을 입력한다.
- 브라우저가 DNS 서버를 조회하여 IP 를 찾는다.
- 브라우저가 scheme를 참고하여 port 정보를 찾는다 (HTTP 80/HTTPS 443)
- 브라우저가 HTTP 요청 메시지를 생성한다.
- 브라우저가 구글 서버에서 데이터를 받을 수 있는 지 확인한다 (TCP 3 Way handshake)
- 브라우저가 소켓 라이브러리를 통해 데이터를 전달한다.
- 구글 서버가 소켓의 HTTP 요청 메시지를 확인하고 내용을 해석한다
- 구글서버가 HTTP 응답 메시지를 만든다.
HTTP (Hyper Text Transfer Protocol)
- 모든 형태의 데이터를 전송할 수 있다.
- 서버 간의 데이터 통신할 때도 사용한다.
버전
HTTP 1.1
- TCP 프로토콜 사용
- 가장 많이 사용하는 버전
HTTP 2
HTTP 3
특징
클라이언트 서버 구조
- 클라이언트는 서버에 요청을 보내고 대기
- 서버가 요청에 대한 결과를 만들어서 응답
- 응답받은 내용을 브라우저에 노출