Http #1. 인터넷의 동작 원리

김동욱·2022년 2월 17일
0
post-thumbnail

1. IP

IP란 인터넷 프로토콜(IP, Internet Protocol)의 줄임말이며 서버 컴퓨터 휴대전화등 인터넷에 연결된 모든 장치는 IP라는 일련의 고유 식별 번호로 분류됩니다.(집 주소라고 생각하면 됨) 인터넷 서비스 공급 회사 IPS가 장치의 IP주소를 부여합니다. 우리가 사용하는 컴퓨터가 아닌 데이터를 저장하는 서버에도 IP주소가 있습니다.

IPS : 개인이나 기업체에게 인터넷 접속 서비스, 웹사이트 구축 및 웹호스팅 서비스 등을 제공하는 회사를 말한다. 대표적으로 한국에서는 KT, SK브로드밴드, LG U+ 등이 있다.

IP의 역할은 다음과 같습니다

  • 지정한 IP 주소에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달

1-1. IP Packet

우리가 우편물에 보내는 사람, 받는 사람 주소를 적듯이 IP도 출발지IP, 목적지 IP가 필요합니다. Packet은 물건을 담는 봉투라는 의미가 있습니다.. 그 의미처럼 Packet에는 다음과 같은 정보를 담고 있습니다

  • 출발지 IP
  • 목적지 IP
  • 전송데이터(메세지등)
    ...

IP 프로토콜이 실행되면 Packet에 위의 정보가 입력되고 전송이 시작됩니다. 인터넷망을 통과하여 목적지 IP에 도착하면 목적지의 서버는 출발지 IP로 다시 정보를 전달합니다.

하지만 IP프로토콜에는 한계가 있습니다.

1-2. IP 프로토콜의 한계

  1. 비연결성
    패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송합니다.
  2. 비신뢰성
    중간에 패킷이 사라지거나 패킷이 순서대로 안올 수도 있습니다.
  3. 프로그램 구분
    같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

위의 문제를 해결할 방법으로 개발된것이 TCP입니다.


2. TCP/IP

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

인터넷 프로토콜 스택 4계층이란 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 프로토콜의 모음이다. 이러한 프로토콜은 용도에 따라 4개 계층으로 이루어져 있다.

  1. 어플리케이션 계층
    프로세스간 통신을 위해 설계된 계층이다. 서버로 전달 될 Packet들이 생성된다.
    ex) HTTP, FTP...
  2. 전송 계층
    Packet에 필요한 추가적인 정보를 추가하기 위해 전송 계층은 어플리케이션으로부터 Packet을 전달 받는다. 전송 계층에서는 Packet 전송 순서 보장을 위한 순서갑, 중복 제어를 위한 고유값등 다양한 정보가 오버랩 되어 추가가 된다.
  3. 인터넷 계층
    인터넷 계층으로 패킷이 전달되면, 인터넷 계층에서는 Packet에 출발지 IP, 목적지 IP에 대한 정보가 추가되어 Packet이 어떤 목적지로 가야하는지 설정이 된다.
  4. 네트워크 인터페이스 계층
    LAN카드, LAN장비등 물리적인 전송을 위한 계층이다.

그럼 인터넷 프로토콜 스택 4계층 방식으로 주소창에 Hello World!라는 메세지를 입력하면 어떤 방식으로 데이터가 전달되는지 보자.

  1. Hello World! 메세지를 주소창에 입력(어플리케이션 계층)
  2. SOCKET 라이브러리를 통해서 OS로 전달(전송 계층)
  3. 전달된 데이터에 TCP정보를 생성합니다.
  4. TCP정보가 생성된 데이터에 IP 정보를 생성합니다. 이것이 IP Packet입니다.(인터넷 계층)
  5. OS는 네트워크 인터페이스 계층으로 Packet을 전달합니다.(네트워크 인터페이스 계층)
  6. 그리고 Packet은 LAN카드를 통해서 서버로 전달될 때 Ethernet frame이라는 데이터가 포함되어 최종으로 서버로 전달됩니다.

2-2. TCP Packet

윗글에서 IP Packet에 어떠한 정보가 담기는지 보았습니다. 하지만 인터넷 프로토콜 스택 4계층을 배우고 난 후 IP Packet이 생성되기전 TCP정보가 먼저 생성 된다는 것을 알게 되었습니다.
TCP정보에는 다음과 같은 정보가 들어갑니다.

  • 출발지 PORT
  • 목적지 PORT
  • 전송 제어
  • 순서
  • 검증 정보

위 TCP정보에서 알 수 있듯이 IP 프로토콜의 한계가 어느정도 해결된 것을 알 수 있습니다.

2-3. TCP

TCP는 전송 제어 프로토콜(Transmission Control Protocol)입니다. IP에서 생겼던 문제를 해결해 주며 서버와 클라이언트간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜입니다. 즉 TCP는 Packet의 전송 및 오류를 제어합니다.

TCP의 특징은 다음과 같습니다.

  • 연결지향(3way handshake)
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰
    ...

물론 더 많은 기능이 있지다. 현재 대부분은 TCP를 사용하고있다.


3. PORT

예를 들어 한 컴퓨터에 여러개의 어플리케이션이 돌아간다고 하면 수많은 Packet들이 한번에 컴퓨터로 전송 될 것이다. 그럼 한번에 한가지의 일 밖에 할 수 없지만 PORT는 그 문제를 해결해 준다.

예를 들어 한 컴퓨터에 게임, 화상통화, 카톡을 동작시키려면 최소 3번의 통신이 필요하다. 그렇게 되면 많은 트래픽이 필요하지만 컴퓨터에 있는 수 많은 포트중 하나로만 연결되면 멀티 커넥트가 가능해지면서 통신이 수월하게 된다.

IP는 주소 PORT는 물품을 받는 구멍이라고 생각하면 된다.


4. DNS

도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다. 특정 컴퓨터의 IP를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호(IP 주소)로 변환해 준다. 도메인 네임 시스템은 흔히 "전화번호부"에 비유된다.

예를 들어 구글의 아이피 주소가 http://74.125.224.72/라면 우리는 아이피 이름을 기억하기 어려울 뿐더러 만약 주소가 변경될 시에 알아내기도 힘들어진다. 그래서 DNS 서버에 74.125.224.72를 google.com이라고 등록을 하면 기억하기도 쉬울 뿐더러 아이피가 변경이 되더라도 문제가 없어진다.

DNS서버가 동작하는 원리는 다음과 같다.

  1. 검색창에 도메인명(google)을 입력한다
  2. DNS서버에서 도메인명(google)이 등록된 IP를 찾는다
  3. DNS서버에서 클라이언트로 IP주소를 응답해준다.
  4. TCP/IP프로토콜 실행...
profile
안녕하세요. 부산에서 근무하고 있는 프론트엔드 개발자 김동욱입니다. 영어 공부 겸 개발 공부를 위해서 글을 작성하고있습니다.

0개의 댓글