HTTP 기본 지식(1) IP, TCP, UDP, PORT, DNS 개념
Updated:
이 글은 김영한님의 인프런 강의인 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 요약한 것입니다.
1. IP(인터넷 프로토콜)
IP(인터넷 프로토콜)의 역할
- 지정한 IP 주소(IP Address)에 데이터를 전달한다.
패킷(Packet)
단위로 데이터를 전달한다. (패킷에는 출발지 IP, 목적지 IP 등의 정보가 있다)
IP의 한계
비연결성
: 패킷을 받을 대상이 없거나 서비스가 불능 상태여도 패킷을 전송한다. (클라이언트는 서버가 패킷을 받을 수 있는 상태인지 모른다)비신뢰성
: 중간에 패킷이 사라질 수도 있고(중간에 서버가 문제가 발생해 전달이 안될 수 있음), 여러 개의 패킷을 보내면 순서대로 도착하지 않을 수 있다(먼저 전송된 패킷이 늦게 도착할 수 있음).프로그램 구분
: 같은 IP를 사용하는 애플리케이션이 둘 이상이면? 구분할 수 없다.
2. TCP(전송 제어 프로토콜, Transmission Control Protocol)
(참고) 인터넷 프로토콜의 4계층
- 애플리케이션 계층(HTTP, FTP)
- 전송 계층(TCP, UDP)
- 인터넷 계층(IP)
- 네트워크 인터페이스 계층
TCP 특징
TCP 세그멘트에는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등에 대한 내용이 있다.
연결 지향
: TCP 3-way handshake(가상 연결, 옛날에 전화선을 물리적으로 연결하는 것은 아니다)데이터 전달 보증
: 클라이언트에서 데이터를 전송하면 서버에서 잘 받았다고 응답을 보내줌- 순서 보증 : (예시) 패킷1, 2, 3으로 보냈는데 서버에 패킷1, 3, 2 순서로 온다면 패킷2부터 다시 보내라고 알려줌
- 신뢰할 수 있는 프로토콜
- 현재 대부분 TCP 사용
TCP 3-way handshake
SYN
: 접속 요청, ACK
: 요청 수락
SYN
(클라이언트 -> 서버)SYN + ACK
(클라이언트 <- 서버)ACK
(클라이언트 -> 서버)
위 3에서 ACK와 함께 데이터를 같이 보낼 수도 있다.
3. UDP(사용자 데이터그램 프로토콜, User Datagram Protocol)
UDP 특징
- 갖추고 있는 기능이 거의 없음
- TCP 3-way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 그렇지만 단순하고 빠름!
- IP와 거의 유사하다. (+Port, +체크섬)
(참고) HTTP3에서 UDP를 사용하는 중!
4. PORT
한 번에 둘 이상 연결해야 한다면? 예를 들어 게임을 하면서 디스코드로 통화를 한다면? IP로는 응답이 게임에 필요한 것인지, 디스코드에 필요한 것인지 분간할 수 없다. 여기서 PORT는 같은 IP 내에서 프로세스를 구분하기 위해 필요하게 된다. 따라서 TCP/IP 패킷에는 출발지 IP, 목적지 IP와 더불어 출발지 PORT, 목적지 PORT가 존재한다.
아파트로 구분하면 IP는 A동, PORT는 A동에 사는 각 호수들이다.
PORT는 0~65535
에 할당이 가능하고, 0~1023
는 흔히 잘 알려진 포트라 사용하지 않는 것이 좋다.
예를 들어)
- FTP -
20
,21
- TELNET -
23
- HTTP -
80
- HTTPS -
443
5. DNS(Domain Name System)
IP는 숫자로 이루어져 있고, 변경될 여지가 있어서 기억하기 어렵다. 그래서 일종의 전화번호부 역할을 하는 DNS 서버
에 IP를 등록해 사용할 수 있다. 변경될 시 DNS 서버에 등록된 IP를 변경하면 된다.
Leave a comment