-
HTTP 인프런 강의 정리 (1)네트워크 2022. 11. 22. 21:29
모든 개발자를 위한 HTTP 웹 기본지식
인터넷 네트워크
1. 인터넷 통신
2. IP(인터넷 프로토콜)
"hello, world"라는 메시지 전송 > 최소한의 규칙 필요 > IP 주소
IP 인터넷 프로토콜 역할
- 지정한 IP 주소에 데이터 전달
- 패킷이라는 통신 단위로 데이터 전달
- 패킷? > 패키지(수화물) + 버킷(덩어리) > 택배 박스에 덩어리를 넣어 보내는 것과 비슷
패킷을 만들고 인터넷 망으로 던진다.
패킷에는 출발 / 목적 IP 주소에 대한 정보가 있다.
인터넷망은 IP 규칙을 이해하기 때문에 패킷의 정보를 가지고 노드를 통해 목적지 서버에 도달한다.
서버에서 메세지를 잘 받았다면 똑같은 과정으로 클라이언트에게 전달한다.
인터넷망은 복잡하기 때문에 경로는 서로 다를 수 있다.
IP 프로토콜의 한계
- 비연결성 : 패킷을 받을 대상이 없거나 서비스가 불가능한 상태여도 패킷 전송
- 비신뢰성 : 중간에 패킷이 사라지거나 순서대로 오지 않은(패킷의 용량이 클 때, 1500byte 이상) 경우
- 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 때
3. TCP / UDP
IP 위에 TCP를 살짝 올려 보완해준다? 는 느낌으로 이해하면 됨
ethernet frame > 물리적인 정보도 포함
TCP 정보(전송 제어, 순서 등)로 인해 IP의 한계점 극복 가능
TCP 특징 (Transmission Control Protocol, 전송 제어 프로토콜)
- 연결지향 - TCP 3 way handshake (가상 연결)
- 데이터 전달 보증(데이터 전송 후 서버에서 응답해 줌)
- 순서 보장(순서가 잘못되면 잘못된 부분부터 다시 전송 요청)
> TCP에 전송 제어, 순서 등의 정보들이 저장되어 있기 때문에 가능한 특징
> 신뢰할 수 있는 프로토콜, 현재는 대부분 TCP 사용
UDP 특징 (User Datagram Protocol, 사용자 데이터그램 프로토콜)
- 연결지향 아님
- 데이터 전달 보증 안됨
- 순서 보장 안됨
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
> IP와 거의 같다 + PORT + 체크섬 정도만 추가
> 애플리케이션에서 추가 작업 필요
4. PORT
하나의 IP로 여러개를 연결할 때 어떻게 할 것인지?
> 출발지 PORT, 목적지 PORT 이용
- IP(아파트) > 목적지 서버를 찾는 주소
- PORT(1002호) > 서버 안 애플리케이션 구분하는 주소
PORT
- 0 ~ 65535 할당 가능
- 0 ~ 1023 잘 알려진 포트, 사용하지 않는 것이 좋음
- TELNET - 23
- HTTP - 80
- HTTPS - 443
5. DNS
- IP는 기억하기 어려움
- IP는 변경 가능함
DNS (Domain Name System, 도메인 네임 시스템)
- 도메인 명을 IP 주소로 변환
URI와 웹 브라우저 요청 흐름
1. URI
URI(Uniform Resource Identifier)
- uniform : 리소스를 식별하는 통일된 방식
- resource : 자원, URI로 식별할 수 있는 모든 것 (제한 없음)
- identifier : 다른 항목과 구분하는데 필요한 정보
> URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다.
URL, URN
- URL - Locator : 리소스가 있는 위치를 지정
- URN - Name : 리소스에 이름을 부여
- 위치는 변할 수 있지만 이름은 변하지 않는다.
- URN 이름만으로 실제 리소스를 찾는 방법이 보편화되지 않음
URL 전체 문법
- 프로토콜(https)
- 호스트명(www.google.com)
- 포트 번호(443)
- 패스(/search)
- 쿼리 파라미터(q=hello&hl=ko)
1) scheme
- 주로 프로토콜 사용
- 프로토콜 : 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙
예) http, https, ftp 등
- http는 80 포트, https는 443 포트를 주로 사용, 포트는 생략 가능
- https는 http에 보안 추가 (HTTP Secure)
2) userinfo
- URL에 사용자 정보를 포함해서 인증
- 거의 사용하지 않음
3) host
- 호스트명
- 도메인명 또는 IP 주소를 직접 사용 가능
4) port
- 포트(PORT)
- 접속 포트
- 일반적으로 생략, 생략 시 http는 80, https는 443
5) path
- 리소스 경로(path), 계층적 구조
예) /home/file1.jpg
/members
/members/100
6) query
- key=value 형태
-?로 시작, &로 추가
예) ?keyA=valueA&keyB=valueB
- query parameter, query string 등으로 불림, 웹서버에 제공하는 파라미터, 문자 형태
7) fragment
- fragment
- html 내부 북마크 등에 사용
- 서버에 전송하는 정보 아님
2. 웹 브라우저 요청 흐름
1) DNS 조회로 IP 찾기, (HTTPS) PORT 찾기 > HTTP 요청 메시지 생성
2) HTTP 메시지 전송
3) 요청 패킷 도착 > HTTP 메세지 해석 > HTTP 응답 메세지 생성
4) HTML 결과 실행
728x90'네트워크' 카테고리의 다른 글
HTTP 인프런 강의 정리 (6) (0) 2022.11.29 HTTP 인프런 강의 정리 (5) (0) 2022.11.28 HTTP 인프런 강의 정리 (4) (1) 2022.11.26 HTTP 인프런 강의 정리 (3) (0) 2022.11.24 HTTP 인프런 강의 정리 (2) (0) 2022.11.23