BackEnd/WEB

모든 개발자를 위한 HTTP 웹 기본 지식_인터넷 네트워크

Leo.K 2023. 3. 24. 14:24

[ 인터넷 네트워크 ]

목차

  • 인터넷 통신
  • IP
  • TCP, UDP
  • PORT
  • DNS

 

1. 인터넷 통신 

클라이언트와 서버가 유선적인 케이블로 연결된 것이 아닌 이상 복잡한 인터넷 망을 통해 통신이 진행된다.
어떤 규칙으로 넘어가는가? 수많은 복잡한 노드를 거쳐서 어떻게 목적지로 도착하는가? 에 대한 의문을 갖고 학습해 보자.

2. IP(인터넷 프로토콜)

- 역할 

각 PC에 고유한 IP 주소가 부여되는데, 지정된 IP주소에 데이터를 전달한다.
패킷이라는 통신 단위로 메시지 전달

- IP 패킷 규칙 정보
출발지 IP, 목적지 IP, 기타..., 전송데이터
클라이언트와 서버사이의 노드끼리 목적지로 가기 위한 노드가 어디 있나? 하면서 소통을 진행하고, 서로 전달하면서 목적지에 도달한다. 이렇게 인터넷 망의 노드끼리 목적지 혹은 출발지를 찾기 위해 소통하는 규칙이 IP 패킷 규칙이다.

 

- IP 프로토콜의 한계 (IP 프로토콜 만으로는 아래의 한계를 극복할 수 없다.)

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스가 불능인 상태여도 패킷은 전송되고, 전송자는 그 사실을 모른다.
      • 목적지의 서버가 살아있는지 없는지 확인할 수는 없고 그냥 친구에게 편지 보내듯이 보낸다.
  • 비신뢰성
    • 메시지가 전송되는 도중에 패킷이 사라지면? 
      • 인터넷망도 서버(노드)를 거쳐서 목적지로 도착해야 하는데, 중간에서 서버 하나가 꺼져 있다면 메시지는 중간에 사라질 것이다.
    • 패킷이 전송 순서와 다른 순서로 도착한다면?
      • 패킷의 크기가 너무 크게 되면 끊어서 보내게(기준 1500BYTE) 된다. 끊어서 보낸 서로 다른 패킷이 인터넷망에서 어떤 노드를 거쳐서 지나가는지는 불확실하기 때문에 목적지에 도착했을 때는 처음 보낸 순서와 다를 수 있다. 
  • 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
      • 한 PC에서 게임도 하고 음악도 들으며 등등의 애플리케이션을 진행 중이라면, 이 둘 중 정확한 목적지를 어떻게 구분하나? 

 

3. TCP, UDP

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

1. 클라이언트가 전송하고자 하는 메시지를 프로그램이 생성해 준다. 
2. SOCKET라이브러리를 통해서 전송계층으로 메시지를 전달한다.
3. TCP정보를 생성해서 2에서 받은 메시지에 덧씌운다.
4. 위에서 알아본 IP 패킷 정보를 3에서 받은 데이터에 덧씌운다.

IP만으로 해결되지 않았던 순서, 같은 IP를 공유하는 애플리케이션이 둘 이상인 경우 등 IP 프로토콜로만으로 해결할 수 없었던 문제를 TCP정보를 통해서 해결할 수 있다. 자세한 내용은 밑에서 계속 알아보자.

5. 이더넷 프레임을 덧씌운 후에 목적지로 전송한다. 

패킷 = 패키지와 버킷의 합성어이다. 

- TCP의 특징 
전송 제어 프로토콜( Transmission Control Protocol)

  • 연결지향 - TCP 3 way handshake (가상연결)
    • 출발지와 목적지의 연결 여부를 확인한 후에 데이터를 전달한다. 
  • 데이터 전달 보증 
    • 메시지가 정확히 전달되었는지 유무를 알 수 있다.
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

 

- TCP 3 way handshake 

1. 클라이언트에서 메시지를 전달하기 전에 연결 여부를 확인하는 SYN를 보낸다. 
2. 클라이언트로부터 SYN을 받은 서버는 확인했다는 의미로 ACK를 전송하고 자신도 연결 여부를 확인하기 위해 SYN을 보낸다. 
3. 다시 서버로부터 SYN을 받은 클라이언트가 서버에서 ACK를 보내면 연결 여부 확인이 끝나고 이때부터 데이터를 전송한다.

-> 개념적으로 연결이 된 가상 연결 상태이다.

- 데이터 전달 보증 

클라이언트가 서버로 데이터를 전송하면 서버에서는 데이터를 잘 받았다고 클라이언트로 다시 보내준다. 

- 순서 보장 

 

- UDP의 특징 
사용자 데이터그램 프로토콜 (User Datagram Protocol)

  • 하얀 도화지에 비유된다. 기능이 거의 없음
  • 연결지향 - TCP 3 WAY HANDSHAKE 기능 X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터의 전달 및 순서가 보장되지 않지만, 단순하고 속도가 빠르다. 
    • IP 프로토콜과 기능은 거의 유사하다. 
    • PORT와 체크섬 정도의 기능만 추가되어 있다.
  • 최근 HTTP 3. 이 출시되면서 TCP의 3 WAY HANDSHAKE도 최적화시켜보겠다며, 다시 UDP가 유세되는 추세라고 함

 

4. PORT 

목적지 서버에 메시지를 보내려고 할 때, 클라이언트가 같은 서버의 둘 이상의 애플리케이션을 사용하고 있다면, 둘 중 어느 곳으로 전송해야 하는지를 구분해야 하는 문제가 남아있다. 이 문제는 '항구'로 번역되는 PORT가 해결해 줄 것이다. 

즉, 포트가 같은 IP 내에서 프로세스(애플리케이션)를 구분하는 역할을 한다. 

 

  • 0 ~ 65535 : 할당 가능
  • 0 ~ 1023 : 잘 알려진 포트로 사용하지 않는 것이 좋다.
    • FTP : 20, 21
    • HTTP : 80
    • HTTPS : 443
    • TELNET : 23

 

5. DNS ->  도메인 네임 시스템(Domain Name System)

IP는 보편적으로 기억하기 어렵다. 더 큰 문제는 IP는 고정이 아니라 변동될 수 있다는 점이다.
그래서 두 서버 사이의 전화번호부 같은 서버를 제공하여, IP 주소를 도메인 명으로 등록하여 변환하는 작업을 진행한다.

위의 이미지처럼 도메인 서버에 도메인명과 IP를 매핑하여 등록한다. 
이후 클라이언트가 도메인을 검색하면 매핑된 IP주소를 반환하여 전송해 준다.