HTTP와 관계가 깊은 IP/TCP/DNS

채재헌·2022년 11월 25일
0
post-thumbnail

<동기>
HTTP에 대해 간단한 구조와 개념, 웹사이트에서의 작동원리에 대해서 저번 시간에 갖게 되었는데 이번 시간에는 HTTP와 관계가 깊다고 알려진 IP/TCP/DNS 프로토콜에 대해 조금 더 자세하게 알아보기 위해서 블로그에 업로드하기로 하였습니다. 비록 지금 업로드 하는것은 각자의 전문서적 책을 참고하고 적는것은 아니지만 HTTP를 배우기위해서 필요한 개념과 작동원리이기 때문에 기록할 필요성이 있다고 봅니다. 그리고 이외에 부족한 부분들은 내가 따로 채우거나 전문서적 책을 참고하여 부족한 부분을 없도록하겠습니다. ㅎㅎ

🎈 목차


1.네트워크의 기본인 TCP/IP

2. 배송을 담당하는 IP

3. 이름 해결을 담당하는 DNS

4. 각각의 HTTP와의 관계


🎆 1.네트워크의 기본인 TCP/IP

1-(1) TCP/IP는 프로토콜의 집합


컴퓨터와 네트워크 기기가 상호간에 통신하기 위해서는 서로 같은 방법으로 통신을 하지 않으면 안된다. 예를 들면어떻게 상대를 찾고, 어떻게 상대에게 이야기를 시작하며, 어떻게 이야기를 종료할지 규칙을 결정할 필요가 있다. 이렇게 서로 다른 하드웨어와 운영체제 ,등을 가지고 서로 통신을 하기 위해서는 모든 요소에 규칙이 필요하게 되며 이러한 규칙을 우리는 프로토콜이라고 부른다.
이렇게 인터넷과 관련된 프로토콜들을 모은 것을 TCP/IP라고 부르며 IP 프로토콜을 사용한 통신에서 사용되고 있는 프로토콜을 총칭해서 TCP/IP라는 이름이 사용되고 있다.


1-(2) 계층으로 관리하는 TCP/IP


TCP/IP에서 중요한 개념 중 하나가 계층(Layer)이다. 이 계층의 장점은 첫번째로 계층화가 되어 있으면 사양이 변경된 해당 계층만 바꾸며 되고, 각 계층은 계층이 연결되어 있는 부분만 결정되어 있어, 각 계층의 내부는 자유롭게 설계할 수 있다. 또한 계충화하면 설계룰 편하게 할 수 있으며,애플리케이션 층에서 애플리케이션은 자기 자신이 담당하는 부분을 고려하면 되고, 상대가 어디에 있는지, 어떠한 루트로 메시지를 전달하는지와 같은 고려를 하지 않아도 된다.

  • 애플리케이션 계층

    애플리케이션 계층은 유저에게 제공되는 애플리케이션에서 사용하는 통신의 움직임을 결정하고 있다. TCP/IP에는 여러 가지의 공통 애플리케이션이 준비되어 있다.
  • 트랜스포트 계층

    트랜스포트 계층은 애플리케이션 계층이 네트워크로 접속되어 있는 2대의 컴퓨터 사이의 데이터 흐름을 제공하며, 이 계층에는 서로 다른 성질을 가진 TCP(Transmission Control Protocol)UDP(User Data Protocol)두가지 프로토콜이 있다.
  • 네트워크 계층(혹은 인터넷 계층)

    네트워크 계층은 네트워크 상에서 패킷의 이동을 다룬다.패킷이란 전송하는 데이터의 최소 단위이며, 이 계층에서는 어떠한 경로(절차)를 거쳐 상대의 컴퓨터까지 패킷을 보낼지를 결정하기도 한다.
  • 링크계층(혹은 데이터 링크 계층, 네트워크 인터페이스 계층)

    네트워크에 접속하는 하드웨어적인 면을 다루며 운영체제가 하드웨어를 제어하기 때문에 디바이스 드라이버랑 네트워크 인터페이스 카드(NIC)를 포함한다.그리고 케이블 등과 같이 물리적으로 보이는 부분도 포함하여 하드웨어적 층면은 모두 링크 계층의 역할이다.

  • 1-(3) TCP/IP 통신의 흐름


=> TCP/IP로 통신을 할 때 계층을 순서대로 거쳐 상대와 통신을 한다. 송신하는 측은 애플리케이션 계층에서부터 내려가고, 수신하는 측은 애플리케이션 계층으로 올라간다.

<HTTP로 예를 들어보자면...>

<송신측 서버>

1.먼저 송신측 클라이언트의 애플리케이션에서 보고싶은 웹의 HTTP리퀘스트를 지시한다.
2. 트랜스포트 계층(RCP)에서는 애플리케이션 계층에서 받은 데이터를 통신하기 쉽게 조각내어 안내번호와 포트 번호를 붙여 네트워크 계층에 전달한다.
3.네트워크 계층에서는 수신지 MAC주소를 추가해서 링크 계층에 전달한다.


<수신측 서버>

1.링크 계층에서 데이터를 받아들여 순서대로 위의 계층에 전달하여 애플리케이션계층까지 도달한다.
2.애플리케이션 계층에 도달하게 되면 클라이언트가 발신했던 HTTP리퀘스트 내용을 수신할수 있다.

  • 참고 => 각 계층의 거칠때는 반드시 헤더로 불려지는 해당 계층마다 해당 계층에 필요한 정보를 추가한다. 반대로 수신측에서는 각 계층을 거칠때 마다 반드시 해당 계층마다 사용한 헤더를 삭제한다.

🥇 2. 배송을 담당하는 IP

2-(1) 배송을 담당하는 IP


IP(Internet Protocol)는 계층으로 말하자면 네트워크 층에 해당한다. IP의 역할은 개개의 패킷을 상대방에게 전달하는 것이며, 상대방에게 전달하기까지 여러가지 요소가 필요하다. 그중에서도 IP 주소와 MAC 주소라는 요소가 중요하다.

  • IP주소 : 각 노드에 부여된 주소를 가리킨다.

  • MAC주소 : 각 네트워크 카드에 할당된 고유의 주소이다.

=>여기서 IP주소는 MAC주소와 결부되고, IP주소는 변경가능하지만 MAC주소는 변경이 불가능하다.


2-(2) 통신은 ARP를 이용하여 MAC주소에서 한다.


IP통신은 MAC 주소에 의존해서 통신을 한다. 인터넷에서 통신 사앧가 같은 랜선 내에 있을 경우는 적어서 여러 대의 컴퓨터와 네트워크 기기를 중계해서 상대방에게 도착하며, 그렇게 중계하는 동안에는 다음으로 중계할 곳의 MAC 주소를 사용하여 목적지를 찾아가는것이다, 이때 ARP(Address Resolution Protocol)_이라는 프로토콜이 사용된다.
ARP는 주소를 해결하기 위한 프로토콜중 하나이며 수신지의 IP주소를 바탕으로 MAC 주소를 조사할 수 있다.


2-(3) 신뢰성을 담당하는 TCP

TCP(Transfer Control Protocol)는 계층으로 말하자면 트랜스포트 층에 해당하는데 신뢰성이 있는 바이트 스트림 서비스를 제공한다. 바이트 스트림이란, 용량이 큰 데이터를 보내기 쉽게 TCP 세그먼트라고 불리느 단위 패킷으로 작게 분해하여 관리하는것을 말하며, 신뢰성 있는 서비스는 상대방에게 보내는 서비스르 의미한다. 결국 TCP는 대용량의 데이터를 보내기 쉽게 상대에게 보내고 정확하게 도착했는지 확인하는 역할을 담당하고 있다.


<상대에게 데이터를 확실하게 보내는 방법>

  • 쓰리웨이 헨드 세이킹

패킷을 보내고 나서 바로 끝내는 것이 아니라 보내졌는지 여부를 상대에게 확인하러 가는것이다.이것은 'SYN'와 'ACK플래그를 사용하며 송신측에서는 최초 'SYN'플래그로 사애에게 접속함과 동시에 패킷을 보내고, 수신측에서는 'SYN/ACK'플래그로 송신측에 접속함과 동시에 패킷을 수신한 사실을 전하는 것이다.


🎉 3. 이름 해결을 담당하는 DNS

  • DNS(Domain Name System)

HTTP와 같이 응용 계층 시스템에서 도메인 이름과 IP 주소 이름 확인을 제공하는 것이다.

=>DNS에 대한 자세한 내용은 내 velog 카테고리에 있는 DNS 작동원리와 구현에 잘 설명되어 있다.(링크 참조 부탁드립니다.)
링크 : <DNS에 대한 자세한 내용 >

🛠 4. 각각의 HTTP와의 관계


<예시>
<클라이언트 리퀘스트>

1.클라이언트가 hack.ip를 알려달라고 요청한다.

  • HTTP 담당 웹 서버에 보낼 HTTP메세지 작성
  • TCP 담당: 통신하기 쉽도록 HTTP메세지를 패킷으로 분해
  • IP 담당: 상대방으로부터 패킷을 수신하고 도착한 패킷을 조립후 일련번호를 보고 조립한다.
  • HTTP 담당: 웹서버에 대한리퀘스트 내용처리

=>위의 담당 순서대로 서버로 내려와 리퀘스트를 요청한다.

<서버 리스폰스>

=>위에 담당하는 순서대로 위로 올라가서 클라이언트에게 리스폰스를 해준다.

<DNS 응답 >

  • DNS는 "hack.ip주소는 "20X.189.105.112이라고 응답한다.

📚 관련 서적

그림으로 배우는 HTTP&Network

profile
후회없이 도전적이고, 나의 선택을 믿는 자신이 되자!!!

0개의 댓글