네트워크 계층의 핵심 프로토콜인 IP는 크게 IP 단편화
와 IP 주소 지정
을한다.
또한 IP의 중요한 특징은 신뢰할 수 없는 프로토콜
이자 비연결 프로토콜
이라는 것이다.
신뢰할 수 없는 통신
은 통신 과정에서 패킷의 데이터가 손상되거나 중복된 패킷이 전송되었더라도 이를 확인하지 않고, 재전송하지도 않으며 순서대로 패킷이 도착할 것이라는 보장도 하지 않는다.
이러한 전송 특성을 최선형 전달
이라고 한다.
비연결 통신
은 송수신 호스트간에 사전 연결 수립 작업을 거치지 않는 특징을 의미한다.
주요 이유는 성능때문이다.
모든 패킷이 제대로 전송되었는지 일일이 확인하고, 호스트 간에 연결을 수립하는 작업은 일반적으로 패킷의 빠른 송수신과는 배치되는 작업이다.
더 많은 시간, 대역폭, 부하가 요구되고, 곧 성능상 악영향으로 이어질 수 있다.
전송 계층의 TCP 프로토콜
은 두 호스트간의 가상 회선을 설정하듯이 연결을 수립한다.
TCP
는 패킷이 수신지까지 올바른 순서대로 확실히 전달되는 것을 보장하기 위해 재전송을 통한 오류 제어
, 흐름 제어
, 혼잡 제어
등 다양한 기능들을 제공한다.
UDP
라는 프로토콜도 존재하는데, UDP는 신뢰할 수 없는 통신, 비연결형 통신을 가능하게 하는 전송 계층의 프로토콜로 TCP보다는 비교적 빠른 전송이 가능하다.
네트워크 외부에서 패킷이 컴퓨터에 도달하면 수신이 끝나는게 아니다.
이 패킷은 웹 브라우저에 전달되어야 할 수도 있고, 게임 혹은 메신저 프로그램에 전달되어야 할 수도 있다.
즉, 패킷은 실행 중인 특정 애플리케이션 프로세스까지 전달되어야 한다.
이는 전송할 때도 마찬가지다. 수신지 호스트의 주소까지 전달했다고 끝나는 것이 아니다.
결국 패킷의 최종 수신 대상은 특정 애플리케이션 프로세스이다.
패킷이 실행 중인 특정 애플리케이션까지 전달되려면 패킷에 특정 애플리케이션을 식별할 수 있는 정보가 포함되어 있어야 한다.
이를 포트
라고 한다.
전송계층에서는 포트 번호를 통해 특정 애플리케이션을 식별한다.
포트 번호는 16비트로 표현 가능하며 종류로는 '잘 알려진 포트
', '등록된 포트
', '동적 포트
'로 나뉜다.
잘 알려진 포트 번호 | 설명 |
---|---|
20, 21 | FTP |
22 | SSH |
23 | TELNET |
53 | DNS |
67, 68 | DHCP |
80 | HTTP |
443 | HTTPS |
등록된 포트 번호 | 설명 |
---|---|
1194 | OpenVPN |
1433 | Microsoft SQL Server 데이터베이스 |
3306 | MySQL 데이터베이스 |
6379 | Redis |
8080 | HTTP 대체 |
동적 포트(49152 ~ 65535)는 특별히 관리되지 않는 포트 번호인 만큼 자유롭게 사용할 수 있다.
포트 번호로 실행 중인 특정 애플리케이션을 식별할 수 있으므로, IP 주소와 포트 번호에 대한 정보가 함께 주어지면 특정 호스트에서 실행 중인 특정 애플리케이션 프로세스를 식별할 수 있다.
IP 주소(호스트 식별) : 포트번호(애플리케이션 프로세스 식별)
192.168.0.15:8000
즉, 전송 계층은 신뢰할 수 있는 연결형 통신이 가능한 프로토콜을 제공하기에 네트워크 계층의 한계를 보완할 수 있고, 포트를 통해 응용 계층의 애플리케이션을 식별함으로써 응용 계층과의 연결 다리 역할을 수행한다.
NAT이란 IP 주소를 변환하는 기술이며, 주로 네트워크 내부에서 사용되는 사설 IP 주소와 네트워크 외부에서 사용되는 공인 IP 주소를 변환하는데 사용된다.
이러한 변환을 위해 주로 사용되는 것이 NAT 변환 테이블이다.
그림의 NAT 테이블을 보면 사설 IP 주소와 공인 IP 주소가 일대일로 대응된다.
그렇게 되면 네트워크 내부에서 사용되는 사설 IP 주소의 수만큼 공인 IP 주소가 필요하기 때문에 이 방식으론 무리가 있다.
포트 기반의 NAT을 NAPT라고 한다.
포트를 활용해 하나의 공인 IP 주소를 여러 사설 IP 주소가 공유할 수 있도록 하는 NAT의 일종이다.
네트워크 외부에서 사용할 IP 주소가 같더라도 포트 번호가 다르면 네트워크 내부의 호스트를 특정할 수 있기 때문에, 다수의 사설 IP 주소를 그보다 적은 수의 공인 IP 주소로 변환할 수 있게 된다.
NAT가 뭘까요?
NAT이란 IP 주소를 변환하는 기술이며, 주로 네트워크 내부에서 사용되는 사설 IP 주소와 네트워크 외부에서 사용되는 공인 IP 주소를 변환하는데 사용됩니다.
Public IP와 Private IP 차이는 뭘까요?
public IP는 공인 IP로 네트워크 외부에서 사용되는 IP를 말합니다.
private IP는 사설 IP로, 네트워크 내부에서 사용되는 IP를 말합니다.
네트워크 요청 시 사설 IP에서 공인 IP로의 변환을 위해 NAT이 사용됩니다.
NEXT. IPv4 vs IPv6