[웹 기본 지식] IP, TCP, PORT, DNS

sewonK·2022년 4월 11일
0
post-custom-banner

* 본 내용은 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 참조하고 있습니다.

IP❓

IP(인터넷 프로토콜)란 복잡한 네트워크 상에서 식별을 위해 부여되는 고유한 번호입니다. 서버와 클라이언트가 통신하기 위해서 존재하는 최소한의 규약입니다. IP는 지정한 IP 주소에 패킷이라는 통신 단위로 데이터를 전달하는 역할을 합니다.

여기서 패킷(package과 bucket의 합성어)이란 무엇일까요? 데이터를 전달할 때, 무작정 메시지를 보내는 것이 아니라 주소를 지정하여 보낸다고 생각하면 됩니다.

IP 패킷

위 그림처럼 (출발지 IP 주소, 목적지 IP 주소, 전송 데이터)의 형식으로 데이터가 전달됩니다. 이러한 패킷은 네트워크 상에서 노드 간 전송을 통해 최종 IP 주소에 도달하게 됩니다. 노드 간 패킷을 전송하는 것을 라우팅이라고 합니다. 네트워크는 복잡하게 이루어져 있기 때문에, 클라이언트의 라우팅 방식과 서버의 라우팅 방식이 다를 수도 있습니다.

IP 프로토콜은 여러 한계점들이 존재합니다.

(1) 비연결성

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

(2) 비신뢰성

패킷이 소실되거나, 패킷이 순서대로 오지 않을 때의 문제를 해결할 수 없습니다.

(3) 프로그램 구분

같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상인 경우 구분이 불가능합니다.

이러한 문제들을 해결하는 통신 방법이 TCP 입니다.

TCP❓

IP의 한계점을 보완하기 위해 IP 계층에 TCP를 올린다고 생각하면 됩니다.

프로토콜 계층
프로그램이 생성한 메세지가 소켓 라이브러리를 통해 전달되고, 메시지 데이터를 감싸는 TCP 정보를 생성합니다. 이러한 TCP 데이터를 IP 패킷이 감싸고, 마지막에는 Ethernet Frame이 씌워져 랜카드를 통해 데이터가 전달되는 것입니다.

TCP/IP 패킷 정보
IP 패킷 내부에 TCP 세그먼트가 포함되어 있는 것을 확인할 수 있습니다. 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등을 가지고 있어 Only IP 프로토콜의 한계를 보완할 수 있는 것이지요.

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

TCP 3-way handshake
TCP는 전송 전에 3-way handshake라는 방법으로 클라이언트와 서버를 가상으로 연결하여 정확한 전송을 보장합니다. 여기서 가상으로 연결한다는 의미는, 논리적으로 연결되었다는 것을 의미합니다. 컴퓨터와 컴퓨터를 직접적으로 선으로 연결한 경우 물리적으로 연결되었다고 하며, 논리적으로 연결되어 있다는 것은 클라이언트와 서버 사이에 무수히 많은 노드들을 거쳐서 연결된다는 것입니다. SYN, ACK을 통해 서버와 클라이언트가 서로의 존재를 확인하였음에도 불구하고, 중간 노드의 결함등이 발생할 경우 이 연결은 유효하지 않기 때문입니다. 그래서 논리적으로 연결이 된것이라고 가정(가상연결)하는 것이라 볼 수 있습니다.

(2) 데이터 전달 보증

TCP/IP 방식에서는 서버에 데이터가 전달되면 데이터를 잘 받았다고 응답하는 방식으로 데이터의 전달을 보증합니다.

(3) 순서 보장

TCP 세그먼트에 존재하는 전송 제어, 순서 등의 정보를 통해 패킷이 다른 순서로 서버에 도착했을 때, 특정 패킷부터 다시 전송해달라고 요청하는 방식으로 순서를 보장합니다.

(4) 신뢰할 수 있는 프로토콜

UDP❓

UDP는 IP 프로토콜과 비슷하지만, 포트 정보, 체크섬(검증용 데이터) 정도만 추가된다는 특징이 있습니다. 포트 정보는 동일 IP로 여러 패킷이 들어올 때 구분하기 위해 존재합니다. UDP의 장점은 최적화할 수 없는 TCP와는 반대로 사용자 마음대로 기능을 추가할 수 있다는 것입니다.

PORT❓

하나의 IP 주소로 여러 데이터 패킷이 전달된다면, 어떻게 데이터를 구분할 수 있을까요? 이는 PORT로 해결할 수 있습니다. TCP 세그먼트에는 출발지와 목적지의 PORT 정보를 포함합니다. IP는 목적지의 서버를 찾는다면, PORT는 같은 IP 내의 목적지 애플리케이션(프로세스)을 찾는 용도라고 생각하면 됩니다. 대표적으로 HTTP 포트는 80, HTTPS는 443 포트를 사용합니다.

DNS❓

IP(v4) 주소는 xxx.xxx.xxx.xxx 형식으로 구성되며, 기억하기 어렵고 또 중간에 변경될 수 있다는 단점이 있습니다. DNS란 Domain Name System으로 IP 주소의 전화번호부 개념입니다. 도메인 명을 IP 주소로 변환할 수 있어 DNS 서버에 도메인 명과 IP를 등록하면 도메인명으로 IP 주소를 찾을 수 있는 것입니다.

post-custom-banner

0개의 댓글