본문 바로가기
CS/네트워크

[Network] 인터넷 네트워크 정리

by 젊은오리 2023. 5. 10.
728x90

[김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 학습 후 정리한 내용입니다.]

순서

  1. 인터넷 통신
  2. IP
  3. TCP, UDP
  4. PORT
  5. DNS

1. 인터넷 통신

인터넷에서 컴퓨터 둘은 어떻게 통신할까?

만약, 클라이언트와 서버가 바로 옆에 있다면 케이블로 연결이 가능하다. 하지만, 클라이언트와 서버가 멀리 있다면, 인터넷 망을 통해서 메시지를 보내야 한다.

인터넷 망은 수많은 노드들로 이루어져 굉장히 복잡하기 때문에, 어떻게 넘어가는지 이해하려면 IP(인터넷 프로토콜)에 대해서 이해해야 한다.

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

인터넷을 이용해서 메시지를 전달하기 위해서는 IP주소를 알아야 한다. 모든 컴퓨터는 자신의 IP주소가 있으며, 메시지를 보내고자 하는 컴퓨터의 IP주소를 알아내어 데이터를 보낼 수 있다.

ex) 클라이언트의 IP가 100.100.100.1이고, 서버의 IP가 200.200.200.2

따라서 IP의 역할은 다음과 같다.

  • 지정한 IP주소에 데이터 전달
  • 패킷이라는 통신 단위로 데이터 전달(IP패킷에는 출발지IP, 도착지IP, 전송 데이터 등이 존재한다.)

 

 

IP프로토콜의 한계 역시 존재한다.

1) 비연결성

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

2) 비신뢰성

  • 중간에 패킷이 사라질 수 있다.
  • 패킷이 순서대로 오지 않을 수 있다. → 노드 간의 데이터 이동 중에 패킷의 순서가 바뀔 수 있다.
이러한 한계를 극복하기 위해 TCP 프로토콜을 사용한다.

 

3. TCP, UDP

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

2. 프로토콜 계층

채팅 프로그램을 실행한 후, “Hello, world!”라는 메시지를 보내게 된다면, Hello,world!라는 데이터에 계층을 지나면서 패킷이 아래와 같이 감싸진다. 이를 Encapsulation(캡슐화)라고 한다.

 

전송 계층에서 TCP패킷이 인터넷 계층을 지나면서 IP패킷에 감싸지는데, 이를 자세히 살펴보면 다음 그림과 같다.

 

4. TCP 특징(전송 제어 프로토콜: Transmission Control Protocol)

1) 연결지향 - TCP 3way handshake(논리적인 가상 연결)

  • 연결이 먼저 됐는지 확인 한 후, 메시지를 보내는 3-way-handshaking이 이루어진다.
  • 클라이언트가 SYN(연결 요청)을 보내고, 서버는 SYN과 ACK(수락)을 보낸다. 마지막으로 클라이언트가 ACK을 보내면서 이루어진다. (서버가 꺼져있다면 응답이 없을 것이다.)

2) 데이터 전달 보증

  • 패킷이 중간에 누락됐다는 사실을 알 수 있다.

3) 순서 보장

  • 패킷의 순서가 올바르지 않게 도착했다면, 서버는 잘못된 부분부터 다시 보내라는 응답을 한다.
  • 어떤 식으로 재전송을 유도하는 지에 대해서는 다 다르다. → 최적화 부분은 다 상이하다.

 

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

1)기능이 거의 없다.

  • 3-way-handshake, 데이터 전달 보증, 순서 보장 모두 못한다.

2) 데이터 전달 및 순서가 보장되지는 않지만, 단순하고 빠르다.

  • TCP는 3-way-handshake와 추가적인 데이터 전송 양이 많지만, UDP의 경우는 아니기 때문에 보다 빠르다.

3) IP와 거의 같지만 PORT와 CheckSum정도만 추가되었다.

  • 애플리케이션에서 추가 작업이 필요하다.

 

4. PORT

우리가 만약에 인터넷으로 게임도 하면서 유튜브를 본다면, 내 IP로 오는 패킷이 게임 서버에서 오는 패킷인지, 유튜브 서버에서 오는 패킷인지 구분하기 쉽지 않다. → IP주소는 단 한개이기 때문이다.

따라서 IP에 포트 번호라는 개념을 추가하여 다양한 프로그램들이 동시에 독립적으로 패킷을 전송할 수 있게 할 수 있다.

앞서 봤지만 TCP/IP의 패킷 정보는 다음과 같다. 클라이언트에서 TCP세그먼트에 출발지 PORT, 목적지 PORT를 함께 데이터와 보내기 때문에, 서버 입장에서도 출발지 PORT를 확인한 후, 출발지 PORT로 데이터를 보낼 수 있게 된다.

즉, PORT는 같은 IP내에서 프로세스를 구분한다.

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

 

5. DNS(Domain Name System)

  • IP는 기억하기 힘들고, 변경될 수 있다. → DNS가 IP의 문제점을 극복하게 해준다.
  • DNS 서버에 도메인을 등록할 수 있고, 우리는 도메인 명으로 찾기 때문에 IP의 문제점을 해결할 수 있다.

728x90

댓글