- 해당 게시물은 인프런 - "모든 개발자를 위한 HTTP 웹 기본 지식" 강의를 참고하여 작성한 글 입니다.
- 유료강의이므로 자세한 내용은 없고, 간단한 설명 위주로 정리했습니다.
강의 링크 -> 김영한 - 모든 개발자를 위한 HTTP 웹 기본 지식 (유료강의)
인터넷에서 컴퓨터 2대가 통신하기 위해서 어떻게 해야되는지 알아볼 것이다.
IP 주소를 통해 통신을 한다.
IP(인터넷 프로토콜)
지정한 IP 주소에 패킷(Packet)이라는 통신 단위로 데이터 전달
패킷(Packet)
클라이언트는 패킷을 노드를 통해 서버에 전달한다.
IP 프로토콜의 한계
- 비연결성(패킷을 받을 대상이 없어도 패킷 전송)
- 비신뢰성(패킷이 사라지거나, 순서대로 안 옴)
- 프로그램 구분(같은 IP에 통신하는 애플리케이션이 둘 이상)
IP 프로토콜의 한계를 해결하는 방법이 바로 TCP, UDP 이다.
메시지는 애플리케이션 계층부터 네트워크 인터페이스 계층까지 정보들을 추가하면서 차례대로 전달된다.
TCP/IP 패킷(Packet)
TCP - 전송 제어 프로토콜 특징
- 연결지향(TCP 3 way handshake)
- 데이터 전달 보증
- 순서 보장(순서 잘못되면 다시 보냄)
클라이언트에서 SYN(접속요청) 을 보내면, 서버에서 ACK(요청수락)를 보내면서 SYN(접속요청)도 같이 보낸다. 그러면 클라이언트에서도 ACK(요청수락)를 서버에 보내 서로 연결한다.
기능이 거의 없지만 PORT 정보가 추가되며, 단순하고 빠르다.
하나의 클라이언트에서 둘 이상의 서버로 요청을 할 때 출발지 PORT와 목적지 PORT 정보를 이용해 구분한다.
ex) 게임 PORT 8090, 화상통화 PORT 21000, 웹 브라우저 PORT 10010
IP는 기억하기 어렵고, 변경될 수 있어 전화번호부 역할을 하는 DNS(Domain Name System)을 사용한다.
클라이언트가 도메인 명으로 요청을 하면 IP 주소를 응답으로 받아, 해당 IP를 이용해 서버에 접속한다.
URI(Uniform Resource Identifier)
Resource를 식별할 때엔 위치(URL)와 이름(URN)으로 분류한다.
URL - Locator: 리소스가 있는 위치 지정
URN - Name: 리소스에 이름 부여 (URN 이름만으로 실제 리소스를 찾을 수 있는 방법 보편화X)
scheme://[userinfo@]host[:port][/path][?query][#fragment]
scheme
주로 프로토콜 사용
ex) http, https, ftp
userinfo
사용자 정보 포함해서 인증, 거의 사용X
host
도메인명 또는 IP 주소 직접 사용 가능
ex) www.google.com
port
일반적으로 생략
ex) http - 80, https - 443
path
리소스 경로, 계층적 구조
ex) /search, /members/100
query
key = value 형태, ?로 시작, &로 추가
ex) ?q=hello&hl=ko
fragment
html 내부 북마크 등에 사용, 서버에 전송하는 정보X
클라이언트가 HTTP 요청 메시지를 생성하고, SOCKET 라이브러리를 통해 TCP/IP로 전달한다.
HTTP 메시지를 포함해 TCP/IP 패킷을 생성해 서버로 요청한다.
패킷을 받은 서버는 HTTP 응답 메시지를 만들어 클라이언트에게 보낸다.
지금까지 김영한 - 모든 개발자를 위한 HTTP 웹 기본 지식 (유료강의) 강의를 참고하여 인터넷 네트워크, URI와 웹 브라우저 요청 흐름 에 대해 공부하였다.