컴공 전공 공부
모든 개발자를 위한 HTTP 웹 기본 지식[인터넷 네트워크]- 섹션 1 본문
(인프런) 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 공부하고 리뷰한 글입니다.
IP (인터넷 프로토콜) 의 역할
- 지정한 IP주소에 데이터 전달
- 패킷이라는 통신 단위로 데이터 전달
IP 프로토콜의 한계
1) 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태 → 패킷 전송
2) 비신뢰성
- 중간에 패킷이 사라지면? → 해결X
- 패킷이 순서대로 안오면? → 해결X
3) 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면? → 구분X
e.g. 한 PC로 게임, 음악 듣기하면 IP는 같음
이러한 IP 프로토콜의 한계에 대한 해결책 -> TCP / UDP
- 인터넷 프로토콜 스택의 4계층
애플리케이션 계층: HTTP, FTP
전송 계층: TCP, UDP
인터넷 계층 : IP
네트워크 인터페이스 계층

IP패킷 정보
: 출발지 IP, 목적지 IP 정보가 담겨 있음

TCP 특징
- 전송 제어 프로토콜
- 연결지향 (연결한 다음 메시지를 보낸다)
3 way handshake
: 1. SYN -> 2. SYN + ACK -> 3. ACK 3번 주고 받음 -> 4. 데이터 주고 받음
- 물리적으로 연결 된다 X(전용 랜선 연결 의미 X) -> 논리적 연결 의미
Q. 3way-handshake를 통해 클라이언트 서버 간 논리적 연결의 의미는?
A. 물리적 연결은 PC와 PC를 직접 선으로 연결한 경우를 말한다.
반면, 논리적 연결은 클라이언트, 서버 사이에 무수히 많은 노드들을 거쳐 연결된 것이다.
3-way-handshake를 통한 연결이 직접 연결이 아닌 이유는 서버와 클라이언트는 서로 SYN, ACK를 통해 서로의 존재를 확인했음에도, 중간 노드의 결함이 발생할 경우 이 연결은 유효하지 않기 때문이다.
- 데이터 전달 보증
: 클라이언트에서 서버로 데이터를 전송하면 서버가 데이터를 잘 받았다고 응답해줌)
- 순서 보장
: 클라이언트에서 서버로 패킷이 순서대로 보내지지 않으면 ,
틀린 부분부터 다 버리고 틀린 패킷부터 다시 서버에서 클라이언트로 보냄
->이것을 확인한 클라이언트는 다시 서버에 틀린 부분부터 보냄

전송제어 , 순서 검증 정보가 있기 때문에 가능함 -> 따라서 TCP는 신뢰할 수 있는 프로토콜
-현재는 대부분 TCP 사용

UDP 특징 (사용자 데이터그램 프로토콜)
- IP와 동일하지만 + PORT + 체크섬(메시지가 맞는지 검증) 정도만 추가
- 기능이 거의 없음
-연결지향 X -TCP 3way handshake X
-데이터 전달 보증 X
-순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 최적화를 하고 싶을 때 UDP에서 작업을 하여 원하는 것을 애플리케이션 레벨에서 만드면 됨
-요즘은 영상도 TCP로 보냄 -> 그렇지만 최적화를 하면서 HTTP3 같은 경우 UDP 프로토콜을 씀
- 애플리케이션에서 추가 작업 필요
: 웹의 통신 규격인 HTTP는 여러가지 버전(0.9, 1.1, 2, 3)이 있다. HTTP/1.1 과 HTTP/2 는 TCP를 기반으로 작동하고 HTTP/3 은 UDP를 기반의 QUIC를 사용한 기술이 도입됐다. 이중 대부분을 차지하는 HTTP/1.1과 달리 HTTP/3은 아직 보편화된 단계가 아니고 구글의 크롬 브라우저에서만 도입되고 사용되는 단계다.
하나의 웹 사이트 페이지는 여러 개의 파일(이미지, css 파일 등)의 모음이다. 따라서 한 페이지를 요청할 때 파생되는 수백개의 요청을 효율적으로 처리하는 것이 HTTP/2, HTTP/3의 주요 목표다. 하나의 사이트를 불러오기 위해 브라우저는 TCP, UDP 등의 모든 통신을 동시에 활용한다. (서버가 UDP를 지원한다는 전제하에)
UDP는 3-way-handshake 과정이나 데이터 순서 보장을 하지 않아 클라이언트가 이를 알아서 해결해야 한다. 즉, 데이터 순서를 보장하지 않는 문제를 해결하기 위해 클라이언트에서는 추가적으로 작업이 필요하게 된다. 웹 개발에서 애플리케이션은 브라우저를 말하고 브라우저(클라이언트)가 TCP, UDP에 대한 처리를 담당하므로 웹 개발자가 이를 구분하여 작업할 필요는 없다.
[출처] https://www.inflearn.com/questions/336522
PORT란?
- IP는 목적지 서버를 찾는 것이고, 그 서버 안에서 돌아가는 애플리케이션들을 또 구분하는 것이 PORT
- 즉, 같은 IP내에서 프로세스를 구분하는 것이 포트

- 0 ~ 65535 포트 번호 할당 가능
- 0~1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP : 20,21
-TELNET : 23
- HTTP : 80
- HTTPS : 443
DNS가 왜 필요한가?
->IP는 변경될 수 있고, 외우기 어렵다 .
DNS : Domain Name System 으로 도메인 명을 ip주소로 변환해준다.
google.com이 호출되는 과정
1. 클라이언트가 DNS 서버에게 도메인 명 google.com에 맞는 ip를 요청한다.
2. DNS 서버에서는 IP를 응답한다.
3. 클라이언트는 이 IP 정보로 서버에 접속하게 된다.
'웹지식' 카테고리의 다른 글
| [모든 개발자를 위한 HTTP 웹 기본 지식] 04. HTTP 메서드 - HTTP API를 만들어보자 (0) | 2024.02.04 |
|---|---|
| 모든 개발자를 위한 HTTP 웹 기본 지식 - 섹션 3 (0) | 2024.02.04 |
| AWS?클라우드 컴퓨팅이 무엇인가요? (0) | 2023.09.16 |
| 서버란 무엇인가요? (0) | 2023.09.16 |