View

반응형

1. 웹은 HTTP로 나타낸다.

웹 브라우저에서 URL을 입력하고 웹 페이지가 보여지기까지 클라이언트의 요청과 서버의 응답이라는 과정을 거친다.

클라이언트에서 서버까지 일련의 흐름을 결정하고 있는 것은 웹에서 HTTP(HyperText Transfer Protocol)이라 불린다. 웹은 HTTP라는 약속을 사용한 통신으로 이루어져 있다.

 

2. 네트워크의 기본 TCP/IP

HTTP를 이해하기 위해서는 TCP/IP의 개념을 알아야 한다. 인터넷을 포함해 우리가 일반적으로 사용하는 네트워크는 TCP/IP라는 프로토콜에서 움직이고 있다. TCP/IP는 인터넷에 관련된 다양한 프로토콜 집합의 총칭이며, HTTP도 그중 하나이다.

 

2.1 IP(Internet Protocol)

인터넷 쇼핑을 할 때 주소를 입력해야 물건을 정산적으로 받을 수 있는 것처럼 웹에서도 요청과 응답을 제대로 받기 위한 주소가 필요하다. 따라서 클라이언트나 서버는 주소를 가지고 있는데 이를 IP 주소라고 한다.

 

2.2 IP의 역할

  • 지정한 IP 주소를 찾아 그곳으로 데이터를 전달한다.
  • 패킷(Packet)이라는 통신 단위로 데이터를 전달한다.

IP 패킷에는 출발지 IP, 목적지 IP, 전송 데이터 등의 정보들이 담겨있다.

 

2.3 IP 프로토콜의 한계

비연결성

IP 프로토콜이 가진 패킷 정보만으로는 대상 서버가 패킷을 받을 수 있는 상태인지 알지 못한다. 이를 확인하기 위해서는 무조건 보내 보는 수밖에 없다. 이를 IP 프로토콜의 한계점으로 보고 비연결성이라 부른다.

 

비신뢰성

패킷은 수많은 서버와 라우터를 거쳐 데이터를 목적지로 전송하게 된다. 이때 다리 역할을 하는 중간 노드가 꺼져있거나 서비스 불능 상태라면 전송한 패킷 데이터는 유실된다.

또한, 패킷이 정상적으로 목적지에 도착했다 하더라도 나누어 보내진 패킷 데이터의 순서가 보장되지 않는다. 앞서 말했듯 전송된 패킷 데이터는 수 많은 서버나 라우터를 거쳐 목적지에 도달하게 된다. 이때 최적의 경로를 탐색하게 되고, 앞서 전송한 1번의 데이터보다 2번의 데이터가 먼저 도착하는 경우가 발생할 수 있다.

 

프로그램 구분이 어려움

IP 프로토콜만으로는 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 여러 개일 때 구분하기 어렵다는 한계점이 있다.

 

2.4 TCP

IP의 한계점을 TCP가 해결해준다.

먼저 인터넷 프로토콜의 4계층이라는 개념을 알아야 한다. 인터넷 프로토콜을 애플리케이션 계층, 전송 계층, 인터넷 계층, 링크 계층(네트워크 인터페이스) 이렇게 4계층으로 나뉜다.

인터넷 계층 즉, IP 위에 전송 계층(TCP)을 올려서 앞서 말한 IP의 한계점을 보완할 수 있는 것이다.

TCP/IP의 패킷에는 IP 주소와 데이터만을 가지고 있던 IP의 패킷에 TCP 세그먼트를 담아 함께 전송한다. TCP 세그먼트에는 PORT 정보, 전송 제어, 순서, 검증 정보 등 다양한 데이터가 담긴다.

 

2.4.1 TCP 특징

전송 제어 프로토콜(Transmission Control Protocol)이라 불리며, 신뢰할 수 있는 프로토콜이다.

 

연결 지향

TCP 3 way handshake라는 방법을 사용하여 상대 컴퓨터와 가상 연결을 수행한다.

'SYN', 'SYN/ACK', 'ACK' 세 번의 통신을 통해 서로 신뢰할 수 있는 상태임을 확인하는 과정이다.

SYN: 접속 요청

ACK: 요청 수락

TCP 3 way handshake를 통해 가상 연결을 했다고 해서 두 개의 컴퓨터가 완벽히 연결됐다고는 볼 수 없다. 두 컴퓨터는 물리적으로 연결된 것이 아니라 인터넷의 수많은 서버와 라우터를 거쳐 목적지에 도달하기 때문에 가상으로 연결된 상태라 할 수 있다.

 

데이터 전달 보증

데이터를 보낸 후 수신 측에서 응답을 보내주기 때문에 데이터가 잘 전달되었는지 확인할 수 있으므로 데이터 전달에 대한 보증이 된다.

 

데이터 전달 순서 보장

TCP 세그먼트에 순서에 대한 정보가 들어있어 이를 확인 후 잘 못된 순서로 데이터가 전송됐을 경우 다시 전송하라는 요청을 보낸다.

 

3. UDP(User Datagram Protocol)

UDP는 TCP와 다르게 기능이 거의 없다. 3 way handshake도 없고 데이터 전달 보증과 순서 보장도 하지 않는다. 즉, 비연결성과 비신뢰성의 특징을 가지고 있다. UDP는 IP와 거의 비슷하지만 IP와는 다르게 PORT 정보를 가지고 있다.

UDP가 3 way handshake나 데이터 전달 보증과 순서 보장을 하지 않기 때문에 생기는 장점도 있다. 바로 단순하고 빠르다는 것이다.

또한, 인터넷은 이미 TCP 기반으로 구성되어있다. 따라서 이미 거대한 생태계가 구축되어있는 TCP는 최적화에 있어 한계점을 가진다. 반면에 UDP는 하얀 도화지와 같아 기능이 거의 없기 때문에 애플리케이션 레벨에서 내가 원하는 기능이나 최적화를 할 수 있다.

그렇다면 UDP는 어떨 때 사용될까?

UDP는 보통 실시간 스트리밍 서비스, 게임 등에 많이 사용된다. 신뢰성보다 연속성이나 속도가 중요한 서비스에서 많이 사용하는 것이다.

 

4. PORT

PORT는 네트워크 패킷이 들어오는 통로, 문이라고 표현할 수 있다.

예를 들어, PORT 없이 PC에서 게임과 화상 통화, 웹 서핑 등 다양한 네트워크를 사용하고 있다고 가정해보자.

PC의 IP로 다양한 서비스의 네트워크 패킷들이 전송될 것이며, 이때 PC는 지금 전송되는 패킷이 어떤 패킷인지 알 수 없다. 또 응답을 보낼 때도 마찬가지이다.

이러한 문제를 해결하기 위해 패킷에 IP와 PORT 정보를 함께 전송하여 어떤 애플리케이션에서 사용되는 패킷인지를 구분한다. 즉, 같은 IP내에 프로세스를 구분하기 위해 PORT가 필요한 것이다.

패킷에는 출발지 IP와 PORT, 목적지의 IP와 PORT 정보가 함께 들어있어, 반대로 응답을 보낼 때도 해당 정보를 통해 IP와 PORT로 응답을 보낼 수 있다.

반응형
Share Link

인기 글

최신 글

전체 방문자

Today
Yesterday