작성중[HTTP 웹 기본 지식] 인터넷 네트워크

sso·2022년 1월 28일
0
post-thumbnail

시작하기에 앞서

네트워크 지식 복기도 할겸, 미뤄왔던 CS공부도 할겸 김영한님의 강의를 듣고 정리해서 올리기로 했다. 해당포스트는 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 듣고 작성하였다.


✅ 인터넷 통신

  • 컴퓨터 둘은 어떻게 통신할까?
    바로 옆에 놓인 경우라면, 케이블로 연결하여 통신이 가능하겠지만, 인터넷을 이용하는 경우라면 어떻게 통신할까?
    복잡한 인터넷 망

결국 웹이나 HTTP도 전부 인터넷 네트워크 망에 기반하여 동작하기 때문에 이번 포스트는 HTTP 학습을 위한 사전 네트워크 기본 학습 챕터이다.

✅ IP(Internet Protocol)

IP 주소

복잡한 네트워크 망에서 위와 같이 'Hello world' 라는 메세지를 다른 곳에 있는 친구에게 보내고 싶다, 이때 어떤 규칙이 있을까?
IP 주소 부여

IP 주소를 통해 클라이언트와 서버는 메세지를 주고 받는 것이 가능해 진다.
이를 위해선 클라이언트(나)가 IP 주소를 부여받아야 하며, 내가 메세지를 보내려는 대상(서버)도 IP 주소가 있어야 한다.

이 때 IP 프로토콜이 등장한다.

IP 프로토콜 역할

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

즉, IP 프로토콜의 역할은 위에서 지정한 IP 주소(100.100.100.1)에 데이터를 전달할 수 있도록 하는 규칙 같은것이다.

IP 패킷

메시지(데이터)는 그냥 보내는 것이 아니라 IP패킷이라는 규칙에 따라 보내진다.

  • IP 패킷이란?
    내가 보내려는 메세지 외에 출발지(나)의 IP와 도착지(받는쪽)의 IP를 적는 것이다.

IP 패킷

IP패킷은 위의 그림 처럼 전송데이터를 감싼 형태로 IP패킷만의 정보를 담고 있다.
IP패킷의 정보에는 출발지IP, 목적지IP 등이 있다.

클라이언트 패킷 전달 과정
패킷을 통해 출발지IP와 목적지IP를
이 패킷이 클라이언트 -> 서버 / 서버 -> 클라이언트로 전달되며 정보를 주고 받는 것이 가능해진다.
위의 그림을 보면 클라이언트에게서 넘겨진 노드들이 200.200.200.2를 받을 수 있는 서버를 찾아 서로 패킷을 던지며 목적지를 찾아가게(도달하게) 된다.
💥하지만, 100.100.100.1 -> 200.200.200.2인 경로와 200.200.200.2 -> 100.100.100.1 의 경로가 서로 다를 수 있다.
=> 즉 요청과 응답의 네트워크 경로가 다를 수 있다는 뜻이다.(이런 일이 일어지는 이유는 인터넷 망이 복잡하기 때문이다.)

IP프로토콜의 한계

IP프로토콜만으로는 한계가 있다.

  • 비연결성
    비연결성

IP 프로토콜은 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다. 이 때 데이터를 받아야 하는 서버가 죽어있어도 클라이언트는 대상 서버의 상태를 알 수 없다.

  • 비신뢰성
    1)중간에 패킷이 사라진다면?
    비신뢰성1

중간에 서버에 문제가 생겨 패킷이 사라지는 문제가 생길수도 있다.(ex. 보내는 네트워크 중간에 있는 서버에 문제가 생기는 경우 => 노드가 갑자기 꺼진다던가, 광케이블이 모종의 이유로 손상된다던가...)

2)패킷이 순서대로 도착하지 않는다면?
비신뢰성2

메세지가 1500byte가 넘으면 보통은 메세지를 끊어서 보내게 된다. 이 과정에서 내가 원했던 순서대로 도착하지 못하고 뒤죽박죽 섞이는 경우가 생길 수 있다.

  • 프로그램 구분
    같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상인 경우 각각의 패킷을 어떻게 구분 할 것인가?

IP 프로토콘 만으로는 이러한 문제들을 해결할 수 없다.
이 문제를 해결하기 위해 사용되는 것이 TCP 프로토콜이다.

✅ TCP, UCP

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

인터넷 프로토콜 4계층

인터넷 프로토콜 스택은 위와 같은 4계층으로 나뉜다.
인터넷 계층의 IP라는 것에 TCP라는 걸 올려서 보완해주는 역할이라고 생각하면 된다.
TCP의 역할을 자세하게 알아보자.

프로토콜 계층

프로토콜 계층
1. 소켓 라이브러리를 통해 OS계층에 hello world라는 메세지를 넘긴다.
2. OS계층에서 TCP가 hello라는 메세지에 TCP 정보를 씌운다. 그 후 IP계층으로 넘겨서 그 위에 IP와 관련된 정보를 씌운다.
=> 이 과정을 거치며 IP패킷이 생성된다.
3. 이게 진짜 네트워크 인터페이스를 통해서 나갈 때/LAN카드를 통해서 나갈 때 이더넷 프레임(실제 물리적인 정보들)이 포함되서 나가게 된다.

IP패킷


-작성중-

✅ PORT

✅ DNS(Domain Name System)

profile
막 시작한 개발블로그

0개의 댓글