해당 시리즈는 김영한님 강의를 보고 정리한 시리즈입니다.
IP
목차
- IP (인터넷 프로토콜)
- TCP/UDP
- 웹브라우저 요청 흐름
참조
1. IP (인터넷 프로토콜)
- 지정한 IP 주소에 데이터 전달
- 패킷이라는 통신 단위로 데이터 전달
ex) 100.100.100.1 → 200.200.200.2 로 request, response 행위를 할 때, 지정된 규약에 의해서 전달된다.
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.
- 비신뢰성
- 중간에 패킷이 사라지면?
- 패킷이 순서대로 안오면?
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 어플리케이션이 둘 이상이면?
- 패킷 전달 순서 문제
- 일정 용량 이상의 패킷을 전송할 때, 끊어서 보내게 되는데 순서대로 가지 않는다.
1. 인터넷 프로토콜 스택의 4계층
인터넷 프로토콜 스택
계층 | 프로토콜 |
---|
애플리케이션 계층 | HTTP , FTP |
전송 계층 | TCP, UDP |
인터넷 계층 | IP |
네트워크 인터페이스 계층 | Ethernet, ARP |
2. 네트워크 순서
- Socket 라이브러리를 이용해 OS 계층에 메시지 전달
- 메시지에다가 TCP 정보를 씌운다.
- IP에 관련된 데이터를 얹는다
- Ethernet frame 정보를 얹는다. (MAC 주소 같은)
2. TCP/UDP
1. TCP 특징
- 전송 제어 프로토콜 (Transmission Control Protocol)
- 연결 지향 - TCP 3 way handshake (가상 연결)
- client → server (SYN : 접속 요청)
- client ↔ server (SYN + ACK)
- clinet → server (ACK : 요청 수락)
- ACK와 함께 데이터 전송 가능하다.
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP로 통신이 이루어진다.
2. TCP/IP 패킷 정보
3. UDP 특징
- User Datagram Protocol
- 하얀 도화지에 비유 (기능이 거의 없음)
- 연결지향 - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 정리
- IP와 거의 같다. + PORT + 체크섬 정도만 추가
- 애플리케이션에서 추가 작업 필요
- 요즘 HTTP 3가 나오면서 굉장히 뜨고 있다.
IP는 목적지 정보, PORT는 목적지 서버의 애플리케이션 구분자라고 보면 된다.
ex) IP를 아파트, PORT를 동호수라 한다.
4. PORT
- 0 ~ 65535 할당 가능
- 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
5. DNS
- Uniform : 리소스 식별하는 통일된 방식
- Resource : 자원, URI로 식별할 수 있는 모든 것 (제한없음)
- Identifier : 다른 항목과 구분하는데 필요한 정보
- URL : Uniform Resource Locator
- URN : Uniform Resource Name
결론 : URI와 URL은 비슷한 의미이다.
7. URL 전체 문법
scheme
- 주로 프로토콜 사용
- 프로토콜 : 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙
- http는 80포트, https는 443 포트를 주로 사용, 포트는 생략 가능
- https는 http에 보안 추가 (HTTP Secure)
[userinfo@]
- URL에 사용자 정보를 포함해서 인증
- 거의 사용하지 않음
host
- 호스트명
- 도메인명 또는 IP 주소를 직접 사용 가능
[:port]
- 접속 포트
- 일반적으로 생략, 생략시 http는 80, https는 443
[path]
[?query]
- key = value 형태
- ?로 시작, &로 추가 가능
- query parameter, query string 등으로 불림, 웹서버에 제공하는 파라미터, 문자 형태
[#fragment]
- fragment
- html 내부 북마크 등에 사용
- 서버에 전송하는 정보 아님
3. 웹브라우저 요청 흐름
-
웹브라우저가 DNS를 조회 (브라우저 캐시, hosts 파일 먼저 참조)
-
IP와 포트 정보를 찾아냄
-
HTTP 요청 메시지 생성
- GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com
-
SOCKET 라이브러리를 통해 전달
- A : TCP/IP 연결(IP, PORT) → SYN, SYN ACK, ACK
- B : 데이터 전달
-
TCP/IP 패킷 생성, HTTP 메시지 포함
-
호스트 서버에서 HTTP 응답메시지 생성.
-
클라이언트 브라우저에서 HTTP 렌더링
참조