모든 개발자를 위한 HTTP 웹 기본 지식(1)

스브코·2022년 2월 28일
0

HTTP

목록 보기
1/6

인프런에서 "모든 개발자를 위한 HTTP 웹 기본 지식" 강의를 수강하면서 노트를 작성해 보았다.


인터넷 네트워크

IP(인터넷 프로토콜)

패킷이라는 통신 단위로 지정한 IP 주소에 데이터를 전달

출발지, 목적지ip, 메세지를 패킷에 넣고 클라이언트가 서버로 요청을 날림, 목적지에서 메세지를 받고 응답을 같은 형식으로 패킷에 넣고 클라이언트쪽으로 던짐.

비연결성 - 패킷을 받을 대상이 없거나 받을수 없는상태(PC가 꺼져있거나)여도 패킷 전송

비신뢰성 - 중간에 패킷이 사라지거나, 순서대로 오지않으면

이러한 위 문제 때문에 TCP/UDP라는 개념이 생김


인터넷 프로토콜 4계층

application - http, ftp

transport - tcp, udp

internet - ip

network interface

IP 정보(출발지, 목적지,....)는 패킷에 있고 그 안에 TCP 세그먼트인 정보들이(출발지 포트, 목적지 포트, 전송제어, 순서, 검증정보...)포함됨, 그리고 그안에 메세지 포함

3 way handshake, 데이터 전달 보증, 순서 보장 - TCP가 신뢰할수 있는 프로토콜인 이유

3 way handshake는 개념적으로만 연결된 논리(물리적 X)

UDP는 IP와 거의 같은데 PORT와 체크섬 정도만 추가됨(기능 거의 없음)

데이터 전달 및 순서 보장은 없지만 단순하고 빠르다.

목적지 주소 = IP, 같은 IP에서 돌아가는 어플리케이션(프로세스)을 구분 = port

port = 0 ~ 65535까지 할당 가능
0 ~ 1023까지는 잘알려진 포트라 사용하지 않는 것이 좋음
ex) ftp - 20, 21, telnet -23, http - 80, https - 443

DNS 사용 이유 - IP는 변경될수 있기 때문에 + IP는 기억하기 어렵기때문에, IP를 도메인명으로 바꿀 수 있다.

DNS서버에서 도메인명으로 IP를 찾음


URI와 웹브라우저 요청 흐름

uniform: 리소스 식별하는 통일된 방식

resource: 자원, URI로 식별할수 있는 모든 것들

URI = uniform resource identifier

URL = uniform resource locator

URN = uniform resource name (이름을 부여하는 건데 이름만으로 실제 리소스를 찾울 수 있는 방법이 보편화 되지 않음)

ex) https://www.google.com:443/search?q=hello&hl=ko

프로토콜(https)
호스트명(www.google.com)
포트번호(443)
패스(/search) - 계층적 설계
쿼리파라미터(q=hello&hl=ko) - key=value 형태

웹브라우저 요청흐름

  1. http 요청 메세지 생성
  2. DNS 조회 후 IP와 포트정보를 찾아낸다.
  3. socket 라이브러리를 통해 전달 후 TCP/IP 연결 및 데이터 전달
  4. http 메세지가 포함된 TCP/IP 패킷 생성(http 메세지: GET /search?q=hello&hl=ko HTTP/1.1, HOST: www.google.com)
  5. 서버에 패킷 도착하면 서버에서 메세지 해석 후 http 응답 메세지 생성 후 클라이언트에 전달
profile
익히는 속도가 까먹는 속도를 추월하는 그날까지...

0개의 댓글