TCP/IP로 통신을 할 때 계층을 순서대로 거쳐 상대와 통신을 한다. 송신하는 측은 애플리케이션 계층에서부터 내려가고, 수신하는 측은 애플리케이션 계층으로 올라간다.
HTTP를 예로 들어 설명하면 먼저 송신측 클라이언트의 애플리케이션 계층(HTTP)에서 어느 웹 페이지를 보고 싶다라는 HTTP 리퀘스트를 지시한다.
그 다음에 있는 트랜스포트 계층(TCP)에서는 애플리케이션 계층에서 받은 데이터(HTTP 메시지)를 통신하기 쉽게 조각내어 안내 번호와 포트 번호를 붙여 네트워크 계층에 전달한다.
네트워크 계층(IP)에서는 수신지 MAC 주소를 추가해서 링크 계층에 전달한다. 이로써 네트워크를 통해 송신할 준비가 되었다.
수신측 서버는 링크 계층에서 데이터를 받아들여 순서대로 위의 계층에 전달하여 애플리케이션 계층까지 도달한다. 애플리케이션 계층에 도달하게 되면 드디어 클라이언트가 발신했던 HTTP 리퀘스트 내용을 수신할 수 있다.
각 계층을 거칠 때는 반드시 헤더로 불려지는 해당 계층마다 해당 계층에 필요한 정보를 추가한다.
반대로 수신측에서는 각 계층을 거칠 때마다 반드시 해당 계층마다 사용한 헤더를 삭제한다.
이렇게 정보를 감싸는 것을 캡슐화라고 부른다.
HTTP와 관계가 깊은 프로토콜은 IP/TCP/DNS
배송을 담당하는 IP
IP(Internet Protocol)는 계층으로 말하자면 네트워크 층에 해당된다.
Internet Protocol 이라는 과장된 이름이 지어져 있지만, 실제 이름 그대로 인터넷을 활용하는 거의 대부분의 시스템이 IP를 이용하고 있다. IP는 TCP/IP라는 명칭의 일부가 될 정도로 중요한 프로토콜이다. IP와 IP주소를 혼동하는 경우가 많은데 IP는 프로토콜의 명칭이다.
IP의 역할은 개개의 패킷을 상대방에게 전달하는 것이다. 상대방에게 전달하기까지 여러 가지 요소가 필요하다. 그 중에서도 IP주소와 MAC주소라는 요소가 중요하다.
IP주소는 각 노드에 부여된 주소를 가리키고 MAC주소는 각 네트워크 카드에 할당된 고유의 주소이다.
IP주소는 MAC주소와 결부된다. IP주소는 변경 가능하지만 기본적으로 MAC주소는 변경할 수 없다.
통신은 ARP를 이용하여 MAC주소에서 한다.
IP통신은 MAC주소에 의존해서 통신을 한다. 인터넷에서 통신 상대가 같은 랜선 내에 있을 경우는 적어서 여러 대의 컴퓨터와 네트워크 기기를 중계해서 상대방에게 도착한다. 그렇게 중계하는 동안에는 다음으로 중계할 곳의 MAC주소를 사용하여 목적지를 찾아가는 것이다.
이때, ARP(Address Resolution Protocol)이라는 프로토콜이 사용된다.
ARP는 주소를 해결하기 위한 프로토콜 중 하나인데, 수신지의 IP주소를 바탕으로 MAC주소를 조사할 수 있다.
그 누구도 인터넷 전체를 파악하고 있지는 않다.
목적지까지 중계를 하는 도중에 컴퓨터와 라우터 등의 네트워크 기기는 목적지에 도착하기까지 대략적인 목적지만 알고 있다.
이 시스템을 라우팅이라고 부르는데 택배 배송과 흡사하다. 화물을 보내는 사람은 택배 집배소 등에 화물을 가지고 가면 택배를 보낼 수 있는 것만 알고 있고, 집배소는 화물을 보내는 곳을 보고 어느 지역의 집배소에 보내면 되는지만 알고 있다. 그리고 목적지에 있는 집배소는 어느 집에 배달하면 되는지만 알고있다. 결국, 어ㅓㄸㄴ 컴퓨터나 네트워크 기기도 인터넷 전체를 상세하게 파악하고 있지 못하다.
신뢰성을 담당하는 TCP
TCP(Transfet Control Protocol)는 계층으로 말하자면 트랜스포트 층에 해당하는데, 신뢰성 있는 바이트 스트리므 서비스를 제공한다. 바이트 스트림 서비스란 용량이 큰 데이터를 보내기 쉽게 TCP 세그먼트라고 불리는 단위 패킷으로 작게 분해하여 관리하는 것을 말하고, 신뢰성 있는 서비스는 상대방에게 보내는 서비스를 의미한다. 격국 TCP는 대용량의 데이터를 보내기 쉽게 작게 분해하여 상대에게 보내고, 정확하게 도착했는지 확인하는 역할을 담당하고 있다.
상대에게 데이터를 확실하게 보내는 것이 일이다.
상대에게 확실하게 데이터를 보내기 위해서 TCP는 "쓰리웨이 핸드셰이킹"이라는 방법을 사용한다. 이 방법은 패킷을 보내고 나서 바로 끝내는 것이 아니라 , 보내졌는지 여부를 상대에게 확인하러 간다. 이것은 SYN와 ACK라는 TCP 플래그를 사용한다.
송신측에서는 최초 SYN 플래그로 상대에게 접속함과 동시에 패킷을 보내고, 수신측에서는 SYN/ACK플래그로 송신측에 접속함과 동시에 패킷을 수신한 사실을 전한다. 마지막으로 송신측이 ACK플래그를 보내 패킷 교환이 완료되었음을 전한다.
이 과정에서 어디선가 통신이 끊어지면 TCP는 그와 동시에 같은 수순으로 패킷을 재전송한다.
TCP는 쓰리웨이 핸드셰이킹 외에도 통신의 신뢰성을 보증하기 위해 다양한 시스템을 갖추고 있다.
이름해결을 담당하는 DNS
DNS(Domain Name System)는 HTTP와 같이 응용 계층 시스템에서 도메인 이름과 IP주소 이름 확인을 제공한다. 컴퓨터는 IP주소와는 별도로 호스트 이름과 도메인 이름을 붙일 수 있다.
주로 사용자는 IP주소 대신 이름을 이용하여 상대의 컴퓨터를 지정한다. 숫자를 나열하는 IP주소를 지정하는 것보다 영어나 숫자 등으로 표기해 컴퓨터의 이름을 지정하는 것이 인간에게 친숙하다. 그러나 컴퓨터에게는 친숙하지 않다. 컴퓨터는 숫자를 나열하는 방법을 더 선호한다.
이 문제를 해결하기 위해 DNS가 있다. DNS는 도메인명에서 IP주소를 조사하거나 반대로 IP주소로부터 도메인명을 조사하는 서비스를 제공하고 있다.
'Http' 카테고리의 다른 글
서버에 임무를 부여하는 HTTP메소드 (0) | 2023.05.23 |
---|---|
간단한 프로토콜 HTTP - 1 (0) | 2023.05.17 |
URI와 URL (0) | 2023.05.15 |
네트워크의 기본은 TCP/IP (0) | 2023.05.11 |
HTTP (1) | 2023.05.10 |