Home 1장 웹과 네트워크의 기본에 대해 알아보자
Post
Cancel

1장 웹과 네트워크의 기본에 대해 알아보자

1.1 웹은 HTTP로 나타낸다

웹 브라우저는 주소 입력란에 지정된 URL에 의지해서 웹 서버로부터 리소스라 불리는 파일등의 정보를 얻는다. 이때 서버에 의뢰하는 웹 브라우저를 ‘클라이언트’ 라고 부른다.

클라이언트에서 서버까지 일련의 흐름을 결정하고 있는 것이 웹에서 HTTP(HyperText Transfer Protocol)이라 불리는 프로토콜이다.

1.2 HTTP는 이렇게 태어났고 성장했다

CERN의 팀 버너스 리 박사는 멀리 떨어져 있는 동료 연구자와 지식을 공유하게 할 수 있도록 시스템을 고안했고, 하이퍼 텍스트에 의해 상호간에 참조할 수 있는 WWW(World Wide Web)의 기본 개념이 되는 것이다.

이 때 WWW를 구성하는 기술로 HTML, HTTP, URL이 있다.

1.3 네트워크의 기본은 TCP/IP

인터넷을 포함하여 일반적으로 사용하고 있는 네트워크는 TCP/IP 라는 프로토콜에서 움직인다. (HTTP도 그중 하나)

TCP/IP는 프로토콜의 집합

컴퓨터와 네트워크 기기가 상호간에 통신하기 위해서는 서로 같은 방법으로 통신하여야 한다. 서로 다른 하드웨어와 운영체제를 가지고 서로 통신을 하기 위해서는 모든 요소에 규칙이 필요하고 이러한 규칙을 ‘프로토콜’이라 부른다. 그리고 인터넷과 관련된 프로토콜들을 모은 것을 TCP/IP라고 부른다.

계층으로 관리하는 TCP/IP

TCP/IP에서 중요한 개념 중 하나가 계층이다. ‘애플리케이션 계층’, ‘트랜스포트 계층’, ‘네트워크 계층’, ‘링크 계층’ 이렇게 4계층으로 나뉘어 있다. 계층화 되어 있는 것은 메리트가 있는데 어디선가 사양이 변경되었을 때 전체를 바꾸지 않고 변경된 해당 계층만 바꾸면 된다. 또 계층화하면 각자의 역할만 고려하면 되기 때문에 설계를 편하게 할 수 있다.

  • 애플리케이션 계층 : 유저에게 제공되는 애플리케이션에서 사용하는 통신의 움직임을 결정한다. (FTP, DNS, HTTP)
  • 트랜스포트 계층 : 애플리케이션 계층에 네트워크로 접속되어 있는 2대의 컴퓨터 사이의 데이터 흐름을 제공한다. (TCP, UDP)
  • 네트워크 계층 : 네트워크 상에서 패킷의 이동을 다룬다. 패킷은 전송하는 데이터의 최소 단위이다. 이 계층에서는 어떠한 경로로 상대의 컴퓨터까지 패킷을 보낼지 결정한다.
  • 링크 계층 : 네트워크에 접속하는 하드웨어적인 면을 다룬다.

TCP/IP 통신의 흐름

TCP/IP로 통신을 할 때 계층을 순서대로 거쳐서 상대와 통신을 한다.

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

각 계층을 거칠 때 헤더로 불려지는 계층마다 필요한 정보를 추가하고, 반대로 수신측에서는 각 계층을 거칠 때마다 해당 계층에서 사용한 헤더를 삭제한다.(캡슐화)

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

배송을 담당하는 IP

IP(Internet Protocol)은 네트워크 계층에 해당되고, 역할은 개개의 패킷을 상대방에게 전달하는 것이다.

상대방에게 패킷을 전달하기 위해서는 IP 주소와 MAC 주소가 필요하다. IP는 각 노드에 부여된 주소를 가리키고, MAC은 각 네트워크 카드에 할당된 고유의 주소를 나타낸다. 그리고 IP는 변경이 가능하고, MAC은 변경이 불가능하다.

IP 통신은 MAC 주소에 의존해서 통신을 한다. 통신시 여러 대의 컴퓨터와 네트워크 기기를 중계해서 상대방에게 도착하는데 중계하는 동안에는 다음에 중계할 곳의 MAC 주소를 사용하여 목적지를 찾아간다. 그리고 이때 ARP(Address Resolution Protocol)가 사용된다. ARP는 수신자의 IP 주소를 바탕으로 MAC 주소를 조사할 수 있다.

목적지까지 중계를 하는 도중 컴퓨터와 라우터 등의 네트워크 기기는 목적지에 도착하기까지 대략적인 목적지만을 알고 있다. 이러한 시스템을 ‘라우팅’이라 부른다. 결국 어떤 컴퓨터나 네트워크 기기도 인터넷 전체를 상세하게 파악하고 있지는 못한다.

신뢰성을 담당하는 TCP

TCP(Transfer Control Protocol)는 트랜스포트 계층에 해당하고, 신뢰성 있는 바이트 스트림 서비스(용량이 큰 데이터를 작게 분해하여 관리하는 것)를 제공한다. 즉 대용량의 데이터를 보내기 쉽게 작게 분해하여 상대방에게 보내고, 정확하게 도착했는지 확인하는 역할을 담당하고 있다.

상대에게 확실하게 데이터를 보내기 위해서 TCP는 Three Way HandShaking 방법을 사용한다. 이 방법은 패킷을 보내고 보내졌는지 여부를 상대방에게 확인까지 하는 것이다. 송신측에서 SYN 플래그로 상대에게 패킷을 보내고, 수신측에서는 SYN/ACK 플래그로 송신측에 패킷을 수신한 사실을 전한다. 그리고 마지막으로 송신측에서 ACK 플래그를 보내 패킷 교환이 완료되었음을 확인한다.

1.5 이름 해결을 담당하는 DNS

DNS(Domain Name System)은 HTTP와 같이 응용 계층 시스템에서 도메인 이름과 IP 주소 이름 확인을 제공한다. 이는 도메인명에서 IP 주소를 조사하거나 IP 주소로부터 도메인명을 조사하는 서비스를 제공한다.

1.6 각각과 HTTP와의 관계

1.7 URI 와 URL

웹 페이지를 표시하기 위해 입력하는 주소가 URL이다. URI는 리소스 식별자로 스키마(http)를 나타내는 리소스를 식별하기 위한 식별자이다.

정리하면 URI는 리소스를 식별하기 위해 문자열 전반을 나타내는데, URL은 리소스의 장소 즉 네트워크상의 위치를 나타낸다.

This post is licensed under CC BY 4.0 by the author.

JavaScript

2장 간단한 프로토콜 HTTP