본문 바로가기
네트워크

[웹 & 네트워크] HTTP, TCP/IP

by 콧등치기국수 2022. 1. 9.

1. HTTP (HyperText Transfer Protocol)

클라이언트에서 서버까지 일련의 흐름을 결정하는 프로토콜(Protocol) 이며 아래에 나오는 TCP/IP 에 속한다.

웹은 HTTP 라는 약속을 사용한 통신으로 이루어져 있다.

HTTP 는 등장한 당시에 주로 텍스트를 전송하기 위한 프로토콜이었지만 프로토콜 자체가 상당히 심플해서 여러 가지 응용 방법을 고려해 기능이 계속해서 추가되었다. 

 

 

2. HyperText

HTTP의 철자 중 HyperText는 많이 들어봤는데 HyperText가 어떤 뜻인지는 정확히 알지 못했다. 

그래서 검색을 해보니 HyperText는 참조(하이퍼링크)를 통해 독자가 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트라고 한다. 

 

여기 클릭

 

위를 클릭할 경우 다른 페이지로 한 번에 이동하는데 이렇게 일반적인 텍스트와 달리 비순차적 접근법으로 다른 페이지로 이동하는 것, 같은 페이지 내의 다른 데이터로 이동하는 해주는 텍스트가 하이퍼 텍스트이다.

HyperText를 가능하게 하는 Hyper Link 기능은 마크업 언어가 <a></a> 태그를 통해서 구현된다.

 

 

3. TCP/IP

현재 수많은 프로그램들이 인터넷으로 통신하는 데 있어 가장 기반이 되는 프로토콜로, 실제 대다수 프로그램은 TCPIP로 통신하고 있다.

컴퓨터가 서로 통신하는 경우, 특정 규칙이나 프로토콜을 사용하여 순서대로 데이터를 전송 및 수신할 수 있는데, 전세계를 통해 가장 일상적으로 사용되는 프로토콜 세트 중 하나가 TCP/IP 이다. TCP/IP의 사용에 있어서 일부 일반적인 기능은 메일, 컴퓨터 간 파일 전송, 원격 로그인이다.

즉 TCP/IP를 말한다는 것은 송신자가 수신자에게 IP주소를 사용하여 데이터를 전달하고 그 데이터가 제대로 갔는지, 너무 빠르지는 않는지, 제대로 받았다고 연락은 오는지에 대한 이야기를 하는 것이다.

 

 

3.1 TCP/IP 는 프로토콜의 집합

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

인터넷과 관련된 프로토콜들을 모은 것을 TCP/IP 라고 부르고, 패킷 통신 방식의 인터넷 프로토콜인 IP(인터넷 프로토콜)와 전송 조절 프로토콜인 TCP(전송 제어 프로토콜)로 이루어져 있다.

 

IP는 데이터의 조각들을 최대한 빨리 목적지로 보내는 역할을 하기 때문에 조각들의 순서가 뒤바뀌거나 일부가 누락되더라도 크게 상관하지 않고 보내는데 집중한다. 복잡한 네트워크 망을 통해 가장 효율적인 방법으로 데이터의 작은 조각들을 되도록 빨리 보내는 일을 한다. TCP는 IP보다 느리지만 꼼꼼히 점검하여 줄을 세우고 망가졌거나 빠진 조각을 다시 요청한다. 

출처 :&nbsp;https://brunch.co.kr/@wangho/6

 

즉 TCP/IP는 하나의 프로토콜이 아닌 TCPIP를 합쳐서 부르는 말이다. IP 프로토콜을 사용한 통신에서 사용되고 있는 프로토콜을 총칭해서 TCP/IP 라는 이름이 사용되고 있다. 

 

 

3.2 계층으로 관리하는 TCP/IP

TCP/IP'애플리케이션 계층' ,'트랜스포트 계층', '네트워크 계층'(또는 '인터넷 계층'), 링크 계층'(또는 '데이터 링크 계층' , '네트워크 인터페이스 계층'), 와 같이 4계층으로 나뉘어져 있다.   

 

Application Layer

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

프로그램(브라우저)가 직접 interact 하는 레이어로 데이터를 처음으로 받는 곳이다.

HTTP, SMTP, FTP 등의 프로토콜을 가진다.

 

Transport Layer

애플리케이션 계층에 네트워크로 접속되어 있는 2대의 컴퓨터 사이의 데이터 흐름을 제공한다. TCP 와 UDP 프로토콜이 있다.

포트를 통하여 Application 레이어가 TCP에게 데이터를 전송한다. 각각의 포트에 프로토콜을 지정할 수 있다. 포트를 통해 받은 데이터들은 패킷이라는 작은 단위로 쪼개진다. 각각의 패킷들은 TCP header에 어떤 순서로 재조합할지에 관한 정보를 가진다. 

 

Internet

네트워크 상에서 패킷을 이동을 다룬다. 패킷이란 전송하는 데이터의 최소 단위이다. 이 계층에서는 어떠한 경로를 거쳐 상대의 컴퓨터까지 패킷을 보낼지를 결정하기도 한다.

인터넷의 경우, 상대 컴퓨터에 도달하는 동안에 여러 대의 컴퓨터랑 네트워크 기기를 거쳐서 상대방에게 전달된다. 그러한 여러 가지 선택지 중에서 하나의 길을 결정하는 것이 Internet 계층의 역할이다.

패킷들이 Internet 계층에 push된다. IP를 사용하여 데이터의 원천지와 목적지에 관한 정보를 첨부한다.

 

Network Access

네트워크에 접속하는 하드웨어적인 면을 다룬다. 운영체제가 하드웨어를 제어하기 때문에 디바이스 드라이버네트워크 인터페이스 카드(NIC)를 포함한다. 그리고 케이블 등과 같이 물리적으로 보이는 부분도 포함한다. 하드웨어적 측면은 모두 네트워크 계층의 역할이다.

마지막으로 패킷들은 Network 계층으로 전송된다. 알맞은 하드웨어로 데이터가 전달되도록 MAC 주소를 핸들링하는 것 뿐만 아니라, 데이터 패킷을 전기신호로 변환하여 선로를 통해 전달할 수 있게 준비해준다.

 

* MAC 주소(Media Access Control Address) : 하드웨어 주소. IP주소는 통신사에 의해 할당되기 때문에 변경될 수도 있지만 MAC주소는 통신기기의 하드웨어 자체에 부여된 변하지 않는 고유한 식별번호를 나타낸다. 세상에 단 하나밖에 없는 값이며 변경될 수 없다. 네트워크를 통해 데이터를 송수신하기 위해서 IP주소와 MAC 주소 모두 필요하다. IP 주소보낸 주소에서 도착지 주소까지 경로를 찾기 위해 필요한 주소이고(예 : A아파트 101동), MAC 주소한 주소 내에서 다양한 기기들이 있을 때, 도착해야하는 기기를 식별하기 위한 주소(예 : 101호)이다.

 

3.3 TCP/IP 통신의 흐름

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

 

송신측

  • 계층을 통과할 때마다 헤더(Header)를 추가한다. -> 캡슐화
  • Header : 해당 계층마다 해당 계층에 필요한 정보를 추가한다.

Application (어느 웹 페이지를 보고싶다 라는 HTTP 리퀘스트를 지시한다.)

-> Transport (Application 계층에서 받은 데이터(HTTP메세지)를 통신하기 쉽게 조각내어 안내 번호와 포트번호를 붙여 Internet계층에 전달한다.)

-> Internet (수신지 MAC 주소를 추가해서 Network Access계층에 전달)

-> Network Access

 

수신측

  • Network access 계층에서 데이터를 받아들여 순서대로 위의 계층에 전달하여 Application계층까지 도달한다.
  • 각 계층을 거칠 때마다 반드시 해당 계층마다 사용한 헤더(Header)를 삭제한다.

Network Access -> Internet -> Transport  -> Application (클라이언트가 발신했던 HTTP 리퀘스트 내용을 수신할 수 있다.)

 

 

출처

0. [책] 그림으로 배우는 HTTP & Network Basic

1. HyperText : https://brunch.co.kr/@coveryou/14

2. TCP/IP : https://www.ibm.com/docs/ko/aix/7.1?topic=management-transmission-control-protocolinternet-protocol  

3. TCP/IP : https://copycode.tistory.com/32

4. TCP/IP : https://aws-hyoh.tistory.com/entry/TCPIP-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

5. TCP:IP : https://brunch.co.kr/@wangho/6

6. TCP:IP : https://velog.io/@rosewwross/TCPIP

7. MAC 주소 : http://melonicedlatte.com/network/2018/12/24/161629.html

8. Header : https://valueelectronic.tistory.com/90

'네트워크' 카테고리의 다른 글

[protocol] smtp란?  (0) 2022.10.06
[웹 & 네트워크] IP, TCP, DNS  (0) 2022.01.12