[HTTP 웹 기본 지식] - 인터넷 네트워크

개발자가 되고 싶어요 ㅣ 2023. 7. 27. 05:34

김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의 정리&복습

인터넷 통신

클라이언트와 서버의 물리적 거리가 멀 때 통신하기 위해서는 '인터넷'을 거쳐야 한다.

그러나 인터넷은 단순하지 않고 여러 노드가 뒤엉킨 복잡한 구조이다. 그렇기 때문에 원활한 전송을 위해서는 IP(Internet Protocol)가 있어야 한다.

 

IP(Internet Protocol)

IP란 '패킷'이라는 통신 단위의 데이터를 전송하기 위해 지정하는 주소이다.

전송 데이터에 출발지 IP(클라이언트), 목적지 IP(서버) 등의 정보를 담은 패킷을 만들어 인터넷 망에 전송하면 인터넷 망 노드에서 여러 전달 과정이 반복되며 최종 목적지에 전달되게 된다.

 

그러나 IP에는 3가지 한계가 존재한다.

IP의 한계: 비연결성, 비신뢰성, 프로그램 구분

 

비연결성이란 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송하는 한계를 의미한다.

예를 들어 데이터를 보냈지만 상대가 받지 못해도 보낸 당사자는 그 사실을 알지 못하는 상황을 의미한다.

 

비신뢰성이란 중간에 패킷이 사라지거나 패킷이 순서대로 오지 않을 수 있는 한계를 의미한다.

 

프로그램 구분이란 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 때 구분이 할 수 없는 한계를 의미한다.

 

이러한 한계들을 해결하기 위해 TCP(Transmission Control Protocol)가 등장했다.

 

TCP(Transmission Control Protocol), UDP(User Datagram Protocol)

인터넷 프로토콜 스택의 4계층은 인터넷에서 데이터를 주고받는 데 사용되는 네트워크 프로토콜의 계층적 구조이다.

예를 들어 웹 브라우저에서 서버에 데이터를 전송한다면 애플리케이션 계층서부터 네트워크 인터페이스 계층까지 각 계층에서 데이터의 생성과 가공이 이루어지고 최종적으로 인터넷을 통한 전송이 이루어진다.

 

TCP(전송 제어 프로토콜) 특징

 

연결 지향 - TCP 3 way handshake (가상 연결): 클라이언트와 서버를 연결 한 상태에서 데이터 전달을 지향한다.

1. SYN: 접속 요청 (클라이언트)

2. SYN + ACK: 요청 수락 (서버)

3. ACK: 데이터 전송 가능 (클라이언트)

4. 데이터 전송

 

데이터 전달 보증: 서버에서 데이터를 받았는지 클라이언트에게 확인시켜준다.

1. 클라이언트가 서버에 데이터를 전송

2. 서버가 클라이언트에 데이터를 받았다고 전송

 

순서 보장: 데이터(패킷) 순서를 보장한다.

1. 패킷1, 패킷2, 패킷3 순서로 전송

2. 패킷1, 패킷3, 패킷2 순서로 도착

3. 서버가 클라이언트에게 패킷2부터 다시 보내라고 전송

 

이러한 특징들이 가능한 이유는 전송 제어, 순서, 검증 정보 등 다양한 정보가 담겨있는 TCP 세그먼트를 데이터에 씌워 전송하기 때문이다.

 

UDP(유저 데이터그램 프로토콜) 특징

 

기능이 거의 없는 하얀 도화지에 비유할 수 있다.

TCP같이 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠르다.

IP와 거의 유사하고 Port와 Checksum이 추가된 개념이다.

 

PORT

PORT란 같은 IP 내에서 프로세스를 구분해주기 위한 또 하나의 주소이다.

하나의 클라이언트가 동시에 여러 서버에 연결을 해야 할 때의 문제를 해결하기 위해 등장했다.

 

예를 들어 누군가 친구와 화상통화를 하며 게임을 하고 있는 도중 웹 브라우저에서 무언가 검색을 하는 상황을 가정해보자.그렇다면 게임은 IP의 8090 PORT, 화상통화는 IP의 21000 PORT, 웹 브라우저는 IP의 10010 PORT가 되는 것이다.

비유하자면 IP가 아파트라면 PORT는 동호수 같은 개념이다.

 

서버에서 클라이언트의 PORT를 알 수 있는 이유는 TCP 패킷에 출발지 IP, 출발지 PORT, 목적지 IP, 목적지 PORT, 전송데이터 등이 담겨있기 때문이다.

 

0~65535의 PORT에 할당이 가능하며 0~1023은 이미 잘 알려진 포트이므로 사용하지 않는 것이 좋다.

대표적인 PORT 4가지

FTP - 20,21

TELNET - 23

HTTP - 80

HTTPS - 443

 

DNS(Domain Name System)

DNS란 도메인을 IP로 변환해주는 시스템이다.

서버 연결 시 매번 긴 숫자의 IP를 외워서 사용하는 것의 비효율성과 IP 변경 가능성 등의 문제를 해결하기 위해 등장했다.

 

예를 들어 도메인(google.com)을 검색하면 전화번호부 같은 서버를 거치면서 도메인을 IP(200.200.200.2)로 변환하여 반환해준다. 이때 IP가 변경되더라도 우리는 도메인만 알고 있다면 접속하는데에 전혀 문제가 없다. 덕분에 우리는 긴 IP를 검색하는 것이 아닌 간단한 도메인으로도 접속이 가능한 것이다.