인프런 김영한님의 모든 개발자를 위한 HTTP 웹 지식 강의를 듣고 정리했습니다.
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의
실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런
www.inflearn.com
인터넷 통신
서버와 클라이언트 사이에 인터넷이 있으면 어떻게 통신을 할까?
IP(인터넷 프로토콜)
복잡한 인터넷 망에서 통신을 하기 위해서는 최소한의 규칙이 필요하고 그건 IP 주소로 해결이 된다.
IP (인터넷 프로토콜)의 역할
- 지정한 IP주소에 데이터 전달
- 패킷이라는 통신 단위로 데이터 전달
인터넷 노드끼리 패킷을 전달하고 전달하고 결국 목적지로 도달한다.
IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 (클라이언트는 서버가 서비스 불능 상태인지 모름)
- 비신뢰성
- 중간에 패킷이 사라지거나, 패킷이 순서대로 오지 않을 때
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 앱이 두 개 이상일 때
TCP, UDP
인터넷 프로토콜 스택의 4계층
프로토콜 계층
채팅 프로그램 사용 예
1. 프로그램이 Hello, World! 메시지 생성
2. SOCKET 라이브러리를 통해 전달
3. TCP 정보 생성, 메시지 데이터 포함
4. IP 패킷 생성, TCP 데이터 포함
5. LAN 카드를 통해 나감
IP만으로 해결이 되지 않았던 순서 제어 등을 TCP로 해결했다.
TCP 특징 (전송 제어 프로토콜)
- 연결 지향 TCP 3 way handshake
- 데이터 전달 보증 (데이터를 받으면 서버에서 응답을 함)
- 순서 보장 (패킷 순서대로 안오면 서버에서 해당 패킷부터 다시 보내라는 요청 보냄 - TCP 전달 정보 안에 정보가 있기 때문)
- 신뢰 가능한 프로토콜
- 현재는 대부분 TCP 사용
TCP 3 way handshake
1. SYN : 접속 요청
2. SYN + ACK : 요청 수락
3. ACK : 요청 수락 ACK와 함께 데이터 전공 가능
4. 데이터 전송
UDP 특징 (사용자 데이터그램 프로토콜)
- 하얀 도화지에 비유 (기능이 거의 없음)
- 연결 지향 X
- 데이터 전달 보증 X
- 순서 보장 X
- 단순하고 빠름
- IP와 거의 동일하고 PORT, 체크섬 정도만 추가
- 어플리케이션에서 추가 작업 필요
PORT
한 번에 둘 이상 연결해야할 때?
TCP 패킷 내에 출발지 PORT와 목적지 PORT가 존재한다.
0 ~ 65535 : 할당 가능
0 ~ 1023 : 잘 알려지지 않은 포트, 사용하지 않는 것이 좋다.
FTP - 20, 21
TELNET - 23
HTTP - 80
HTTPS - 443
DNS (도메인 네임 시스템)
IP는 어렵고 변경이 가능하다.
DNS의 사용 (전화번호부의 사용 같은 느낌)
URI
URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다.
URL
foo://example.com:8042/over/there?name=ferret#nose
scheme, authority, path, query, fragment
URN
urn:example:animal:derret:nose
.
URI : Uniform Resource Idenrifier (리소스를 식별하는 통일된 방식, URI로 식별할 수 있는 모든 자원, 다른 항목과 구분하는 데 필요한 정보)
userinfo는 거의 사용하지 않는다.
웹브라우저 요청 흐름
https://www.google.com:443/ 까지 읽으면 1. DNS조회 2. HTTP 요청 메시지 생성
3. TCP / IP 패킷 생성
4. 서버에서 HTTP 응답 메시지 보냄
'🌐web > HTTP 웹 기본 지식' 카테고리의 다른 글
[HTTP 웹 지식] HTTP 헤더2 - 캐시와 조건부 요청 (0) | 2023.02.27 |
---|---|
[HTTP 웹 지식] HTTP 헤더1- 일반 헤더 (0) | 2023.02.23 |
[HTTP 웹 지식] HTTP 상태 코드 (0) | 2023.02.22 |
[HTTP 웹 지식] HTTP 메서드, 메서드 활용 (0) | 2023.02.21 |
[HTTP 웹 지식] HTTP 기본 (1) | 2023.02.20 |