Web/HTTP

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

ansui 2023. 6. 28. 22:55

#1 인터넷 네트워크

 


1.1 인터넷 통신 

클라이언트 → 서버

"Hello World!" 전송

 

클라이언트 ← 서버

"Ok" 전송

 

- 인터넷이 있으면 복잡!

 


1.2 IP(Internet Protocol) 

1. IP 주소 부여

- IP 인터넷 프로토콜 역할

: 지정한 IP 주소(IP Address)에 데이터 전달

: 패킷(Packet)이라는 통신 단위로 데이터 전달

IP패킷

 

2. 클라이언트 패킷 전달

 

3. 서버 패킷 전달

 

 

< IP 프로토콜의 한계 >

- 비연결성

: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송

 

- 비신뢰성

: 중간에 패킷이 사라지면? (패킷 소실)

: 패킷이 순서대로 안오면? (패킷 전달 순서 문제 발생)

 

- 프로그램 구분

: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

 

 


1.3 TCP, UDP 

< 인터넷 프로토콜 스택의 4계층 >

애플리케이션 계층 - HTTP, FTP

전송 계층 - TCP, UDP

인터넷 계층 - IP

네트워크 인터페이스 계층

1. 프로그램이 Hello, world! 메시지 생성

2. SOCKET 라이브러리를 통해 전달

3. TCP 정보 생성, 메시지 데이터 포함

4. IP 패킷 생성, TCP 데이터 포함

 

 

TCP/IP 패킷 정보

*TCP 세그먼트가 추가

→ IP의 문제점 해결

 

< TCP 특징 >

: 전송 제어 프로토콜(Transmission Control Protocol)

- 연결지향 - TCP 3 way handshake (가상 연결)

- 데이터 전달 보증: ACK

- 순서 보장: 순서가 잘못오면 다시보내라는 메시지를 전송

- 신뢰할 수 있는 프로토콜

- 데이터량이 많고 시간이 오래 걸림

- 현재는 대부분 TCP 사용

 

 

< TCP 3 way handshake >

SYN: 접속 요청

ACK: 요청 수락

*참고: 3. ACK와 함께 데이터 전송 가능

 

 

< UDP 특징 >

: 사용자 데이터그램 프로토콜(User Datagram Protocol)

- 하얀 도화지에 비유(기능이 거의 없음)

- 연결지향 X - TCP 3 way handshake X

- 데이터 전달 보증 X

- 순서 보장 X

- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름

 

*정리

- IP와 거의 같다. (+ PORT + 체크섬(검증) 정도만 추가)

- 애플리케이션에서 추가 작업 필요

 


1.4 PORT 

한번에 둘 이상 연결해야 하면?

- IP만으로는 구분 x → port로 구분!

예) IP - 아파트 port - 동호수

 

< PORT >

: 같은 IP 내에서 프로세스 구분

- 0 ~ 65535 할당 가능

- 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음

- FTP - 20, 21

- TELNET - 23

- HTTP - 80

- HTTPS - 443

 


1.5 DNS

IP는 기억하기 어렵고 변경될 수 있다.

→ DNS 도메인 네임 시스템(Domain Name System)

- 전화번호부

- 도메인 명을 IP 주소로 변환

 

예)

1. 도메인 명 google.com

클라이언트 → DNS서버

 

2. 응답: 200.200.200.2

클라이언트 ← DNS서버

 

3. 접속 200.200.200.2

클라이언트 → 서버

 


자료는 김영한님의 인프런 모든 개발자를 위한 HTTP 웹 기본 지식 강의에서 가져온 것입니다.