본문 바로가기
CLASS/모든 개발자를 위한 HTTP 웹 기본 지식

Section 01. 인터넷 네트워크

by ghan2 2024. 7. 21.

 

IP란?

IP는 Internet Protocol로, 지정한 IP주소에 데이터를 전달하는 규칙같은 것이다. IP패킷이라는 규칙에 따라서 데이터를 전달한다. 

 

IP 프로토콜의 한계

1. 비연결성

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

2. 비신뢰성

- 중간에 패킷이 유실될 수 있다.

- 패킷이 순서대로 도착하지 않는 경우

3. 프로그램 구분

- 같은 아이피에서 여러 어플리케이션을 사용중일 때 어떻게 구분할 것인가..

 

이를 해결하기 위해 TCP/UDP가 등장했다!

 

인터넷 프로토콜 스택의 4계층

 

프로토콜 계층

만약 채팅 프로그램으로 Hello 라는 메시지를 보낸다면, 메시지를 생성하고 주로 소켓 라이브러리를 통해 전달하는데 이후 TCP 정보를 씌우고 그 위에 IP정보를 씌운다. 그리고 이 패킷이 LAN카드를 통해 나갈 때 이더넷 프레임이 포함되어 나간다. 이 때 프레임에는 맥주소와 같은 물리적인 주소가 포함되어 나간다.

 

IP 패킷 정보

출발지 IP, 목적지 IP, 기타 정보..가 들어있고 

 

TCP/IP에는 추가적인 정보가 들어가서 IP의 한계를 극복한다.

 

TCP 특징

전송 제어 프로토콜(Transmission Control Protocol)

1. 연결 지향(연결을 한 이후에 메시지를 전송한다.) : TCP 3 way handshake (가상 연결)

3. ACK를 보낼 때 데이터를 전송하기도 함

이는 개념적으로 연결된 것이고 물리적으로 연결된 것은 아니다.

 

2. 데이터 전달 보증 (패킷 누락을 알 수 있다.)

 

 

3. 순서를 보장한다.

 

=> 신뢰할 수 있는 프로토콜.

=> 현재는 대부분 TCP를 사용한다.

 

UDP 특징

사용자 데이터그램 프로토콜(User Datagram Protocol)

1. 하얀 도화지에 비유한다. (기능이 거의 없음..)

2. 하나 추가된 것은 PORT과 체크섬(메시지 검증) 하나의 PC에서 여러 어플리케이션을 구분해줌.

3. 연결지향도 아니고, 데이터 전달 보증도 없고, 순서보장도 하지 않음.

4. 그러나! 단순하고 속도가 빠르다. (최적화하고 싶을 때 기존 TCP를 두고 UDP를 손대면 된다.)

최근에는 UDP가 뜨고 있음. 

 

PORT

하나의 PC에서 게임도 하고 화상통화도 하고 웹 브라우저도 보고 있다면, 한 개의 클라이언트 PC가 여러개의 서버와 통신해야 한다. 그러나 패킷들은 날라올텐데 어떤 어플리케이션의 응답인지 알 수 없을 것이다. 이는 IP의 한계였지만 TCP/UDP에는 PORT라는 개념이 있기 때문에 이를 해결할 수 있다. IP가 아파트면, PORT는 동, 호를 말한다!

 

- 0~65535 할당 가능

- 0 ~ 1023 : 잘 알려진 포트로, 사용하지 않는 것이 좋다.

FTP - 20, 21
TELNET - 23
HTTP - 80
HTTPS - 443

 

DNS

IP는 기억하기 어렵다는 문제가 있다. 또한 IP는 변경될 수 있다. 

DNS는 도메인 네임 시스템(Domain Name System)으로 전화번호부 같은 서버를 제공하고 이를 아이피 주소로 바꿀 수 있게 해주는 것이다. 도메인을 구매해서 아이피 주소를 등록한다. 클라이언트가 구글에 접근할 때 DNS서버에게 google.com의 아이피 주소를 줘! 라고 하면 DNS에서 제공한다. 이렇게 되면 기억하기 어려운 문제, 변경될 수 있는 문제를 해결해준다.