본문 바로가기

WEB/WEB

네트워크의 기본은 TCP/IP

반응형

TCP/IP는 프로토콜의 집합이다.


HTTP를 이해하기 위해서는 TCP/IP 프로토콜에 대해 어느 정도 알고 있어야 할 필요가 있다.


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


HTTP는 그 중 하나이다.


컴퓨터와 네트워크 기기가 상호간에 통신하기 위해서는 서로 같은 방법으로 통신하지 않으면 안된다 .


예를 들면, 어떻게 상대를 찾고, 어떻게 상대에게 이야기를 시작하고, 어떠한 언어로 이야기를 하며, 어


떻게 이야기를 종료할까와 같은 규칙을 결정할 필요가 있다. 이렇게 서로 다른 하드웨어와 운영체제 등


을 가지고 서로 통신을 하기 위해서는 모든 요소에 규칙이 필요하게 된다. 이러한 규칙을 프로토콜이라


고 부른다.


TCP/IP란 인터넷에 관련된 다양한 프로토콜 집합의 총칭이다.



프로토콜에는 여러 가지가 있다. 케이블 규격이랑 IP 주소 지정 방법, 떨어진 상대를 찾기 위한 방법과 


그 곳에 도달하는 순서, 그리고 웹을 표시하기위한 순서 등이다.


이렇게 인터넷과 관련된 프로토콜들을 모은 것을 TCP/IP라고 부른다. TCP와 IP 프로토콜을 가리켜 


TCP/IP라고 부르기도 하지만, IP 프로토콜을 사용한 통신에서 사용되고 있는 프로토콜을 총칭해서 


TCP/IP라는 이름이 사용되고 있다.


계층으로 관리하는 TCP/IP


TCP/IP에서 중요한 개념 중 하나가 계층(Layer)이다. TCP/IP는 ‘애플리케이션 계층’, ‘트랜스포트 계층’, ‘네트워크 계층’, 


‘링크 계층’ 이렇게 4계층으로 나뉘어 있다. TCP/IP가 계층화된 것은 메리트가 있기 때문입니다. 


예를 들면, 인터넷이 하나의 프로토콜로 되어 있다면 어디선가 사양이 변경되었을 때 전체를 바꾸지 않으면 안되지만, 계


층화되어 있으면 사양이 변경된 해당 계층만 바꾸면 된다. 각 계층은 계층이 연결되어 있는 부분만 결정되어 있어, 각 계


층의 내부는 자유롭게 설계할 수 있다. 또한, 계층화하면 설계를 편하게 할 수 있다. 애플리케이션 층에서 애플리케이션


은 자기 자신이 담당하는 부분을 고려하면 되고, 상대가 어디에 있는지, 어떠한 루트로 메시지를 전달하는지, 전달한 메


시지가 확실하게 전달되고 있는지 같은 고려를 하지 않아도 된다. TCP/IP 각 계층의 역할은 다음과 같다.



애플리케이션 계층


애플리케이션 계층은 유저에게 제공되는 애플리케이션에서 사용하는 통신의 움직임을 결정하고 있다.


TCP/IP에는 여러 가지의 공통 애플리케이션이 준비되어 있다. 예를 들면, FTP랑 DNS 등도 애플리케이션의 한 가지 


다. HTTP도 이 계층에 포함된다.


트랜스포트 계층


트랜스포트 계층은 애플리케이션 계층에 네트워크로 접속되어 있는 2대의 컴퓨터 사이의 데이터 흐름을 제공한다


트랜스포트 계층에서는 서로 다른 성질을 가진 TCP(Transmission Control Protocol)와 UDP(User Data 


Protocol)가지 프로토콜이 있다.


네트워크 계층(혹은 인터넷 계층)


네트워크 계층은 네트워크 상에서 패킷의 이동을 다룬다. 패킷이란 전송하는 데이터의 최소 단위이다. 이 계층에서


는 어떠한 경로(이른바 절차)을 거쳐 상대의 컴퓨터까지 패킷을 보낼지를 결정하기도 한다. 인터넷의 경우라면 


상대 컴퓨터에 도달하는 동안에 여러 대의 컴퓨터랑 네트워크 기기를 거쳐서 상대방에게 배송된다. 그러한 여러 가


지 선택지 중에서 하나의 길을 결정하는 것이 네트워크 계층의 역할이다.


링크 계층(혹은 데이터 링크 계층, 네트워크 인터페이스 계층)


네트워크에 접속하는 하드웨어적인 면을 다룬다. 운영체제가 하드웨어를 제어하기 때문에 디바이스 드라이버랑 네


트워크 인터페이스 카드(NIC)를 포함한다. 그리고 케이블 등과 같이 물리적으로 보이는 부분(커넥트 등을 포함


한 여러 가지 전송 매체)도 포함한다. 하드웨어적 측면은 모두 링크 계층의 역할이다.


TCP/IP 통신의 흐름



TCP/IP로 통신을 할 때 계층을 순서대로 거쳐 상대와 통신을 한다. 송신하는 측은 애플리케이션 계층에서부터 내려가고, 


수신하는 측은 애플리케이션 계층으로 올라간다.


HTTP를 예로 들어 설명하면 먼저 송신측 클라이언트의 애플리케이션 계층(HTTP)에서 어느 웹 페이지를 보고 싶다라는 


HTTP 리퀘스트를 지시한다. 그 다음에 있는 트랜스포트 계층(TCP)에서는 애플리케이션 계층에서 받은 데이터(HTTP 메


시지)를 통신하기 쉽게 조각내어 안내 번호와 포트 번호를 붙여 네트워크 계층에 전달한다.


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


이로써 네트워크를 통해 송신할 준비가 되었다.


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


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



각 계층을 거칠 때는 반드시 헤더로 불려지는 해당 계층마다 해당 계층에 필요한 정보를 추가한다.


반대로 수신측에서는 각 계층을 거칠 때마다 반드시 해당 계층마다 사용한 헤더를 삭제한다.


이렇게 정보를 감싸는 것을 캡슐화라고 부른다.






반응형

'WEB > WEB' 카테고리의 다른 글

DNS  (0) 2020.09.05
HTTP와 관계가 깊은 프로토콜은 IP/TCP/DNS  (0) 2020.09.05
웹은 HTTP로 나타낸다  (0) 2020.09.01
서버사이드렌더링 & 클라이언트사이드렌더링  (0) 2020.04.22
인증과 권한부여(인가)  (0) 2019.12.10