이 글은 [모든 개발자를 위한 HTTP 웹 기본 지식]을 듣고 정리한 내용입니다
📌 IP (인터넷 프로토콜)
![](https://media.vlpt.us/images/somyeong0623/post/d1868523-4b5b-472c-8ed2-43978f7b43e5/image.png)
IP(인터넷 프로토콜)의 역할
- 지정한 IP 주소(IP Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
- IP패킷 정보에는 출발지 IP, 목적지 IP, 메세지가 있다.
IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불가 상태여도 패킷을 전송한다.
- 비신뢰성
- 전송하는 중간에 패킷이 사라질 수도 있다.
- 패킷이 순서대로 전송되지 않을 수도 있다.
- 프로그램 구분 모호
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 구분할 수가 없다.
ex) 한 PC에서 노래들으면서 게임하는 경우 각 애플리케이션 구분 불가
📌 TCP, UDP
- 인터넷 프로토콜 스택의 4계층
![](https://media.vlpt.us/images/somyeong0623/post/344994bf-c1bd-4fec-aa31-6205e32cf597/image.png)
- 프로토콜 계층에서의 데이터 전송 흐름
![](https://media.vlpt.us/images/somyeong0623/post/32aa5444-0ac6-4b49-9948-fc58ae780ccf/image.png)
- 패킷(packet) = 패키지(package) + 버킷(bucket)
![](https://media.vlpt.us/images/somyeong0623/post/c5725aa3-3009-4160-bb7b-a8406e56b0c5/image.png)
TCP 특징
-
IP 에다가 TCP를 올려서 보완해준다고 생각하면 된다.
-
TCP는 전송 제어 프로토콜이다. (Transmission Control Protocol)
-
1.연결 지향적이다. - TCP 3 way handshake (가상 연결)
- 연결을 하고 나서, 메세지를 보낸다
-
2.데이터 전달을 보증해준다.
- 패킷이 중간에 누락 되었으면 내가 알 수 있다.
-
3.순서를 보장해준다.
-
신뢰할 수 있는 프로토콜이다.
-
현재 대부분의 애플리케이션에서 TCP를 사용한다.
🌱 TCP 3 way handshake
![](https://media.vlpt.us/images/somyeong0623/post/aeeca241-e282-467b-a49c-5bf719a8598a/image.png)
- 클라이언트에서 서버로 SYN(요청)을 보낸다.
- 서버에서 클라이언트한테 SYN+ACK (요청+수락) 을 보낸다.
- 클라이언트에서 서버에게 ACK(수락)을 보낸다.
- 연결이 되고 나면 데이터를 전송한다.
- 이 과정을 거치기 때문에, 중간에 응답이 없으면 문제가 있음을 인지하고 연결이 안된다. -> 메세지를 안보낸다.
- 요즘엔 최적화가 돼서 세번째 과정에서의 ACK을 보낼 때 데이터도 같이 전송한다.
3 way handshake
는 진짜로 연결된 것이 아니라 개념적으로만 연결된 것이다.
🌱 데이터 전달 보증
![](https://media.vlpt.us/images/somyeong0623/post/a8bce907-17df-48b0-a8a9-4b5f023a3dff/image.png)
- TCP가 붙게되면, 클라이언트에서 서버에게 데이터를 전송했을 때, 서버에서 잘 받았다는 응답을 보내준다.
- 응답이 없으면, (클라이언트는) 문제가 있음을 인지 할 수 있다.
🌱 순서 보장
![](https://media.vlpt.us/images/somyeong0623/post/b2b71790-40c6-4311-b5e0-a38e4d708246/image.png)
- 패킷 순서가 잘못됐으면, 서버에서 잘못된 순서부터 다 버리고, 잘못된 패킷부터 다시 보낸다.
- 그럼 클라이언트는 그 패킷부터 다시보내면 된다.
- 이는 TCP 데이터 안에 전송제어, 순서, 검증 정보 등이 추가가 되었기 때문에 가능한것이다.
UDP 특징
- 기능이 거의 없다.
- TCP 3 way handshake X, 데이터 전달 보증 X, 순서 보장 X
- 장점: 단순하고 빠르다.
- IP와 거의 같고, PORT와 체크섬 정도가 추가 되어있음.
📌 PORT
- 영어로 PORT는 '항구' 라는 뜻이다.
![](https://media.vlpt.us/images/somyeong0623/post/931ac170-6459-4154-89be-6442dabcf415/image.png)
- 한 PC에서 여러개의 애플리케이션을 사용중이라면, 이것들을 각각 구분해야 할 필요가 있다.
🌱 IP와 PORT
- IP : 목적지 서버를 구분하는 것
- PORT : 서버 안에서 돌아가는 애플리케이션들을 구분하는 것
ex) 아파트를 IP라고 하면, PORT는 호수 이다.
패킷 정보
- TCP와 IP를 합쳐서 TCP/IP 패킷이라 한다.
- TCP/IP 패킷에는 출발지ip, 출발지 port, 목적지 ip, 목적지 port, 전송 데이터 등등이 담겨져 있다.
![](https://media.vlpt.us/images/somyeong0623/post/b75098af-e54c-4e72-b6e0-96b8d55eb974/image.png)
![](https://media.vlpt.us/images/somyeong0623/post/68633adc-b553-4c83-ade5-6d036d0d0644/image.png)
PORT 번호
- 0~65535: 할당 가능
- 0~1023: 잘 알려진 포트, 사용하지 않도록 하자.
- FTP: 20,21
- TELNET: 23
- HTTP: 80
- HTTPS: 443
📌 DNS
IP 문제점
- IP는 기억하기 어렵다
- IP는 변경될 수 있다. (변경되면 접근 못하는 일 발생)
DNS
- 도메인 네임 시스템(Domian Name System)
![](https://media.vlpt.us/images/somyeong0623/post/a557256c-bd12-48f8-8599-45f66b8f6f68/image.png)
1. 도메인 이름을 구매해서 DNS 서버에 등록한다.
2. DNS서버를 통해 해당 도메인 명에 해당하는 IP주소를 찾을 수 있다.
3. IP주소가 변경되면, DNS서버에서 이를 관리, 갱신 해준다.