CS/Network

제 1장 웹과 네트워크의 기본

JJcoding 2023. 3. 23. 14:23

서버에 의뢰를 하는 웹 브라우저 등을 클라이언트(Client)라고 부른다.
클라이언트에서 서버까지 일련의 흐름을 결정하고 있는 것은 웹에서
HTTP(HyperText Transfer Protocol)이라 불리는 프로토콜이다.


네트워크의 기본은 TCP/IP

컴퓨터와 네트워크 기기가 상호간에 통신하기 위해서는 서로 같은 방법으로 통신하지 않으면 안된다.
서로 다른 하드웨어와 운영체제 등을 가지고 서로 통신을 하기 위해서는 모든 요소에 규칙이 필요하게 된다.
이러한 규칙을 프로토콜이라고 부른다.

이렇게 인터넷과 관련된 프로토콜을 모은 것을 TCP/IP라고 부른다.
(프로토콜에는 여러가지가 있다. 케이블 규격, IP 주소 지정 방법, 웹을 표시하기 위한 순서 등)


TCP/IP에서 중요한 개념 중 하나가 계층(Layer)이다.

계층화가 된 이유는?

  • 인터넷이 하나의 프로토콜로 되어 있다면 어딘가 사양이 변경되었을 때 전체를 바꾸지 않으면 안되지만, 계층화되어 있으면 사양이 변경된 해당 계층만 바꾸면 된다.
  • 설계를 편하게 할 수 있다. 각 층은 자신이 담당하는 부분만 고려하면 될 뿐 상대가 어디에 있는지, 어떤 루트로 메세지를 전달하는지, 전달한 메세지가 확실하게 전달되고 있는지 같은 고려를 하지 않아도 된다.
  1.  애플리케이션 계층 :  유저에게 제공되는 애플리케이션에서 사용하는 통신의 움직임을 결정
  2.  트랜스포트 계층 : 애플리케이션 계층에 네트워크로 접속되어 있는 2대의 컴퓨터 사이의 데이터 흐름을 제공
  3.  네트워크 계층 : 네트워크 상에서 패킷(전송하는 데이터의 최소 단위)의 이동을 다룸
  4.  링크 계층 : 네트워크에 접속하는 하드웨어적인 면을 다룸

TCP/IP 통신의 흐름

송신 측 클라이언트의 어플리케이션 계층(HTTP)에서 어느 웹 페이지를 보고 싶다는 HTTP 리퀘스트를 지시한다.

트랜스포트 계층(TCP)에서는 애플리케이션 계층에서 받은 데이터(HTTP 메세지)를 통신하기 쉽게 조각내어 안내 번호와 포트 번호를 붙여 네트워크 계층에 전달한다.

네트워크 계층(IP)에서는 수신지 MAC 주소를 추가해서 링크 계층에 전달한다.

수신 측 서버는 링크 계층에서 데이터를 받아들여 순서대로 위의 계층에 전달하여 애플리케이션 계층까지 도달한다.

애플리케이션 계층에 도달하게 되면 드디어 클라이언트가 발신했던 HTTP 리퀘스트 내용을 수신할 수 있다.


HTTP와 관계가 깊은 프로토콜은 IP/TCP/DNS

  • 배송을 담당하는 IP 
    IP의 역할은 개개의 패킷을 상대방에게 전달하는 것이다. 상대방에게 전달하기까지 여러 요소가 필요한데, 그 중에서도 IP주소와 MAC(Media Access Control Address)주소라는 요소가 중요하다.
       IP주소 : 각 노드에 부여된 주소 
       MAC 주소 : 각 네트워크 카드에 할당된 고유의 주소
    IP주소는 변경 가능하지만, 기본적으로 MAC 주소는 변경할 수 없다.
    IP통신은 MAC 주소에 의존해서 통신을 한다. 이 때 ARP(Address Resolution Protocol)이라는 프로토콜이 사용된다.
    ARP는 주소를 해결하기 위한 프로토콜 중 하나인데, 수신지의 IP 주소를 바탕으로 MAC 주소를 조사할 수 있다.

    그 누구도 인터넷 전체를 파악하고 있지는 않다.
    목적지까지 중계를 하는 도중에 컴퓨터와 라우터 등의 네트워크 기기는 목적지에 도착하기까지 대략적인 목적지만을 알고 있다. 이 시스템을 라우팅이라고 부르는데 택배 배송과 흡사하다. 화물을 보내는 사람은 택배 집배소 등에 화물을 가지고 가면 택배를 보낼 수 있는 것만 알고 있으며, 집배소는 화물을 보내는 곳을 보고 어느 지역의 집배소에 보내면 되는지만 알고 있다. 이처럼 어떤 컴퓨터나 네트워크 기기도 인터넷 전체를 상세하게 파악하고 있지 못한다는 것이다.

  • 신뢰성을 담당하는 TCP
    상대에게 확실하게 데이터를 보내기 위해서 TCP는 "three way handshaking(쓰리웨이 핸드셰이킹)" 이라는 방법을 사용한다. 이 방법은 패킷을 보내고 나서 바로 끝내는 것이 아니라 보내졌는지 여부를 상대에게 확인하러 간다.

    송신측에서 최초 'SYN' 플래그로 상대에게 접속함과 동시에 패킷을 보내고, 수신측에서는 'SYN/ACK' 플래그로 송신측에 접속함과 동시에 패킷을 수신한 사실을 전한다. 마지막으로 송신측이 'ACK' 플래그를 보내 패킷 교환이 완료되었음을 전한다. 이 과정에서 어디선가 통신이 도중에 끊어지면 TCP는 그와 동시에 같은 수순으로 패킷을 재전송한다.

  • 이름 해결을 담당하는 DNS
    DNS(Domain Name System)는 도메인 이름과 IP 주소 이름 확인을 제공한다. 
    주로 사용자는 IP 주소 대신 이름을 이용하여 상대의 컴퓨터를 지정한다. 숫자보다 알파벳 등으로 표기해 컴퓨터의 이름을 지정하는 것이 인간에게 친숙하기 때문이다. 그러나 컴퓨터는 숫자를 나열하는 방법을 더 선호한다. 이 문제를 해결하기 위해 DNS가 있다. DNS는 도메인명에서 IP주소를 조사하거나 반대로 IP 주소로부터 도메인명을 조사하는 서비스를 제공한다. 

 

참고 : 그림으로 배우는 Http&Network Basic