인터넷 네트워크와 웹 브라우저 요청 흐름
인터넷 네트워크 기초
인터넷 망은 복잡한 구조로 되어있다. 인터넷에서 컴퓨터끼리 통신하는 방법에 대해 알아보자.
인터넷 프로토콜 스택의 4계층
인터넷 프로토콜 스택 4계층이란 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 프로토콜의 모음이다. 이러한 프로토콜은 용도에 따라 4개의 계층으로 나뉜다.
IP(Internet Protocol)
- 각 클라이언트와 서버에게 IP주소가 부여된다.
- 통신 과정에서 지정한 IP 주소에 데이터를 전달할 수 있다.
- 패킷이라는 통신 단위로 데이터를 전달한다.
- IP 패킷에는 출발지 IP, 목적지 IP주소, 데이터 및 기타 다른 정보들이 담긴다.
- IP프로토콜의 한계
- 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송된다.
- 비신뢰성: 중간에 패킷이 사라지거나 패킷이 순서대로 오지 않는 경우를 처리할 수 없다.
- 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 두 개 이상의 애플리케이션을 구분할 수 없다.
TCP/UDP
TCP(Transmisson Control Protocol)
- 전송 제어 프로토콜 이다 , IP 프로토콜의 한계를 극복하였다.
- 3-way handshake 방식을 사용하여 연결을 보장하는 방식이다.
- 클라이언트는 연결하고자 하는 서버에게 SYN을 보냄
- 서버가 데이터를 받으면 클라이언트에게 ACK와 SYN을 보냄
- 클라이언트가 데이터를 받으면 서버에게 ACK를 보냄
- 데이터의 순서를 보장한다. 데이터가 순서대로 도착하지 않으면 재전송을 요청하여 순서대로 다시 받는다.
- IP프로토콜의 한계를 극복한 신뢰할 수 있는 프로토콜로 현재 대부분 TCP를 사용한다.
UDP (User Datagram Protocol)
- TCP 프로토콜과 달리 기능이 거의 없다. IP와 유사하며 PORT와 체크섬 정도만 추가
- 가장 큰 장점은 단순하고 빠르다는 것이다. 사용자화 하여 사용하기 좋다.
PORT
- 하나의 IP에서 어느 애플리케이션의 패킷인지 구분해준다.(같은 IP 내에서 프로세스를 구분)
- IP가 아파트면 PORT는 몇호인지 구분해주는 역할이다.
- 0~65535까지 포트번호를 할당 가능하지만 0~1023은 이미 잘 알려진 포트로 할당하지 않는 것이 좋다.
DNS(Domain Name System)
- IP는 기억하기 어려우며 변경될 수 있다. DNS는 IP에 대해 전화번호부 역할을 한다.
- 도메인 명을 IP 주소로 변환한다.
URI와 웹 브라우저 요청 흐름
URI(Uniform Resource Identifier)
URI 의 의미
- Uniform: 리소스를 식별하는 통일된 방식
- Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음)
- Identifier: 다른 항목과 구분하는데 필요한 정보
URL 과 URN
- URI는 URL과 URN으로 분리된다.
- URL(Locator): 리소스가 있는 위치를 지정
- URN(Name): 리소스에 이름을 부여
- 위치는 변할 수 있지만, 이름은 변하지 않는다. 다만 URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않아서 URI와 URL은 거의 같은 의미로 사용되고 있다.
URL(Uniform Resource Locator)
아래 예시를 통해 URL을 사용하는 방법을 알아보자
scheme(https)
- 주로 프로토콜사용
- 프로토콜이란 어떤 방식으로 자원에 접근할 것인가 하는 규칙을 뜻한다.
- ex) http(80번포트), https(443포트), ftp등
userinfo@
- URL에 사용자 정보를 포함해서 인증, 거의 사용하지 않는다.
host(www.google.com)
- 호스트명. 도메인명 또는 IP 주소를 직접 사용하는 것도 가능하다.
port(443)
- 포트, 접속포트 일반적으로는 생략한다, 생략시 http는 80 https는 443을 자동으로 사용한다.
path(/search)
- 리소스 경로로 계층적 구조를 가지고 있다.
- ex) /home/file1.jpg, /members
query(q=hello&hl=ko)
- key=value형태
- ?로 시작, &로 추가 가능 ?keyA=valueA&keyB=valueB
- query parameter, query string 등으로 불린다. 웹서버에 제공하는 파라미터, 문자 형태로 이루어져있다.
fragment
- html 내부 북마크등에 사용, 서버에 전송하는 정보는 아니다.
웹 브라우저의 요청 흐름
웹 브라우저의 요청이 들어오고 서버가 응답을 내보내는 과정을 그림으로 간단히 알아보자.
HTTP 메시지 및 패킷 생성
-위 그림과 같이 클라이언트에서 요청에 대한 HTTP 메시지 및 패킷을 생성하여 서버에 전달한다.
통신과정
-웹 브라우저가 요청 패킷을 전달하면 서버에서는 응답 패킷을 만들어 다시 클라이언트에게 전송한다.
HTTP응답 메시지 및 결과
-서버는 응답 메시지를 클라이언트에 전달하고 브라우저는 이 응답 메시지를 통해 HTML 렌더링을 진행한다.
다음 포스팅-https://yulddong.tistory.com/20
HTTP 기본
HTTP(HyperText Transfer Protocol) HTTP는 HyperText Transfer Protocol의 약자로 웹 상에서 정보를 주고 받을 수 있는 프로토콜이다. HTTP의 기본 개념들과 특징을 알아보자. HTTP의 특징 HTTP 메시지(헤더+바디)에 모
yulddong.tistory.com