인터넷 네트워크

김정훈·2023년 3월 23일
0

HTTP 공부하러 왔는데 웬 인터넷?

💡웹이나 HTTP도 전부 인터넷 네트워크 망 기반으로 동작하기 때문이에요.

인터넷 통신

👉 클라이언트 컴퓨터가 서버 컴퓨터에게 필요한 데이터를 자신에게 달라고 요청합니다.

👈 요청을 받은 서버는 그에 따른 응답을 해줍니다.

그런데!!

인터넷 망은 굉장히 굉장히 복잡하게 이루어져 있는데, 어떻게 그 복잡한 길에서 정확하게 목적지를 찾아갈까요?

💡 IP라는 네비게이션 덕분이죠.

IP(Internet Protocol)

복잡한 인터넷 망에서 아주 멀리 떨어진 컴퓨터에게 보내야 합니다. 어디로 보낼지 어떻게 알아야 할까요?

컴퓨터마다 고유한 주소가 있습니다. 우리도 모두 거주지에 대한 주소가 있죠? 택배보낼 때 혹은 주문할 때 배송지를 적어야 하는 것을 생각해봅시다.

우리가 보낸 데이터는 보내고자 하는 IP 주소, 컴퓨터 주소로 전송(배달)되게 됩니다.

IP의 역할

  1. 지정한 IP 주소에 데이터 전달
  2. 패킷이라는 통신 단위로 데이터를 전달
    • 데이터를 전송하기 전에 사용해야 하는 포장지가 따로 있습니다.
    • IP 패킷에는 출발지IP, 목적지IP, 데이터가 포함되어 있습니다.
    • 인터넷 망에 존재하는 노드들은 모두 IP를 사용하기 때문에 정확한 주소에 메시지를 보낼 수 있는 것입니다.
    • 서버도 같은 방식으로 클라이언트에게 응답할 때 출발주소와 도착주소, 메시지를 작성해서 전송합니다.
    • 클라이언트, 서버 간 통신 시 같은 IP끼리 통신하는 것이라도 거쳐가는 인터넷 망의 경로는 다를 수 있습니다. 서울에서 부산 가는 길이 여러개인것처럼요.

IP의 한계

  • 비연결성

    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
    • 연결하고자 하는 대상이 어떤 상태인지 클라이언트는 알지 못합니다.
  • 비신뢰성

    • 중간에 보낸 패킷이 사라지면?.. 보낸 나는 사라졌는지 모릅니다...

    • 패킷을 여러개를 보냈는데, 서버에 패킷이 순서대로 안오면?..
      서버가 순서대로 받았는지 나는 모릅니다...

      클라이언트 전송 메시지: 넵! 내일 출근 안전하게 하겠습니다.
       
       (데이터 소실)
      
      서버에서 받은 메시지: 넵! 내일 출근 안 하겠습니다.

      😨😨😨😨😨

  • 프로그램 구분

    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?... 어떤 서버에서 온 데이터인지 어떻게 구분하지...
  • 이런 IP의 한계를 극복하도록 도와주는 것이 TCP라는 친구입니다.

TCP(Transmission Control Protocol)

  • 출발지 port, 목적지 port, 전송제어, 순서, 검증 정보를 포함하고 있습니다.

TCP 특징

  • 연결지향 TCP 3 way handshake(가상연결)
    - 연결을 되었는지 확인하고 메시지를 보낸다.
  • 데이터 전달 보증
    - 패킷이 소실되거나 전송 속도가 느려지면 송신자가 그 사실을 알 수 있습니다.
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 애플리케이션에서 TCP를 사용

TCP 3 way handshake

  1. 클라이언트가 서버에 연결 요청
  2. 서버는 요청을 받고 자신도 클라이언트에게 연결 요청
  3. 클라이언트도 연결 요청을 받아들임!
    -> 연결 사실을 알 수 있다. 연결안되면 안보냄, 요즘은 클라이언트 응답시에 데이터를 전송함
  4. 연결되고 서버로 데이터 전송~

⭐주의!
실제로 물리적인 연결과는 다릅니다. 자기들끼리 요청과 응답을 주고 받고 연결되었겠거니~ 하는 것입니다.

데이터 전달 보증

  1. 클라이언트가 서버로 데이터 전송

  2. 서버: 데이터 잘 받음

  3. 서버에서 응답이 안오면???.... 문제가 있는데?

순서 보장

  1. 클라이언트가 서버로 데이터 여러개 전송
  2. 서버에 순서가 다르게 도착
  3. 서버는 올바르게 받은 순서만 저장하고 다른 순서를 받은 곳 부터 다시 보내도록 클라이언트에게 응답

UDP(User Datagram Protocol)

TCP와 같은 계층인데 TCP의 특징들이 모두 빠져있음
IP와 거의 같은데 PORT정보, 치크섬 정도만 추가

PORT

같은 IP를 사용하는 컴퓨터, 즉 같은 컴퓨터가 여러 서버의 응답을 받을 수 있도록 만들어주는 것.
같은 IP내에서 프로세스를 구분해주는 것

DNS

  • IP Address는 사람이 기억하기 어려운 형태다.
  • 서버의 IP가 이전 IP에서 변경된다면 클라이언트가 기억하고 있던 IP에 접근을 시도 했는데, 존재하지 않는 IP가 될 수 있다.
  • DNS: 전화번호부와 같은 서비스, DNS서버에 IP주소에 대응되는 도메인 명이 저장되어 있다.
  • 웹 브라우저에 도메인 명을 입력하면 해당 컴퓨터에 연결되어 있는 DNS서버에 도메인과 매칭되는 IP주소를 요청한다.
  • 클라이언트는 응답 받은 IP로 접속한다.

요약
복잡한 인터넷 망에서 데이터 통신을 위해서 IP라는 프로토콜을 사용한다.
하지만 IP 프로토콜만 가지고는 데이터가 잘 도착했는지 신뢰하기도 어렵고, 포트라는 개념이 없어 메시지의 순서가 꼬일 수도 있다.
TCP라는 프로토콜이 IP의 문제점을 보완해준다.
UDP라는 프로토콜도 있었는데 IP와 유사하지만 Port정보를 포함하고 있다.
포트는 같은 IP 내에서 동작하는 애플리케이션 중에 통신 할 애플리케이션을 선택할 때 사용한다.
DNS는 사람이 기억하기 어려운 형태인 IP 주소를 기억하기 쉬운 도메인으로 바꿔주는 시스템이다.

0개의 댓글