영권's

HTTP , TCP / IP 란? 본문

컴퓨터 공학/네트워크

HTTP , TCP / IP 란?

ykkkk 2020. 10. 13. 00:49

1.1 HTTP는 (Hyper Text Transfer Protocol , 하이퍼 텍스트 전송방식)

HTTP란 웹서버와 클라이언트 간의 문서를 교환하기 위한 통신 규약입니다.

Transfer라는 해석 그대로 데이터를 전송하겠다라는 의미로 앞에 Hypertext 가 붙은 이유는 하이퍼텍스트 기반으로 데이터를 전송하겠다는. 간단히 말해서 링크기반으로 데이터에 접속하겠다는 의미.

World Wide Web(WWW)의 분산되어 있는 Server와 Client 간에 Hypertext를 이용한 정보교환이 가능하도록 하는 통신 규약이다.

HTTP는 웹에서만 사용하는 통신 규약으로 TCP/IP 기반으로 한 지점에서 다른 지점 (보통 클라이언트와 서버)으로 요청과 응답을 전송한다.

1989년 Tim Berners Lee가 처음 설계 하였다.

 

1.2 HTTP의 특징

  • HTTP 메시지는 HTTP Server와 HTTP Client에 의해서 해석된다.
  • TCP/IP 프로토콜의 Application 계층에 위치해 있다.
  • TCP(Transmission Control Protocol, 전송 제어 프로토콜)을 이용한다 (Default Port 80)

1.3 HTTP의 동작

  • HTTP는 서버/클라이언트 모델을 따른다. 클라이언트에서 요청(Request)를 보내면 서버는 처리해서 응답(Response)한다. 
  • 클라이언트 : 서버에 요청하는 클라이언트 소프트웨어가 설치된 컴퓨터. chrom, firefox, ie등의 클라이언트 소프트웨어를 이용한다. 클라이언트는 URI를 이용해서 서버에 접속하고, 데이터를 요청할 수 있다.
  • 서버 :  클라이언트의 요청을 받아서, 요청을 해석하고 응답을 하는 소프트웨어가 설치된 컴퓨터. Apache, nginx, IIS, lighttpd 등이 서버 소프트웨어다.

 

1.4 Connectless & Stateless

HTTP는 Connectless 방식으로 동작한다.

서버에 연결 후 요청해서 응답을 받으면 연결을 끊고 기본적으로 자원하나에 대해 하나의 연결을 만든다.

  • 장점 : 불특정 다수를 상대로 하는 서비스에 적합한 방식이다. 수십만명이 웹서비스를 이용하더라도 접속유지는 최소한으로 할 수 있기 떄문에, 더 많은 유저의 요청을 처리할 수 있다.
  • 단점 : 연결을 끊어버리기 때문에 , 클라이언트의 이전 상태를 알 수가 없다. 이러한 HTTP의 특징을 Stateless 라고 하는데, Connectless로 부터 파생되는 특징이라고 할 수 있다.  클라이언트의 이전 상태 정보를 알 수 없게 되면, 웹 서비스를 하는데 당장에 문제가 생긴다. 예컨데, 클라이언트가 과거에 로그인을 성공하더라도 로그 정보를 유지할 수가 없다. HTTP는 cookie를 이용해서 이 문제를 해결하고 있다. 

Cookie는 클라이언트와 서버의 상태 정보를 담고 있는 정보조각이다. 

로그인을 예로 들자면, 클라이언트가 로그인에 성공하면, 서버는 로그인 정보를 자신의 데이터베이스에 저장하고 동일한 값을 cookie형태로 클라이언트에 보낸다.

클라이언트는 다음 번 요청때 cookie를 서버에 보내는데, 서버는 cookie 값으로 자신의 데이터베이스를 조회해서 로그인 여부를 확인할 수 있다. 자세한 내용은 세션과 쿠키에 대한 글을 따로 게재하겠습니다.

 

2. TCP / IP

TCP/IP 는 TCP IP 의 2개의 프로토콜로 이루어져 있는데, 통상 IP 프로토콜 위에 TCP 프로토콜이 놓이게 되므로 TCP/IP 라고 부르게 되었다.

 

TCP(Transmission Control Protocol)는 데이터 전달을 관리하는 규칙으로 데이터를 작게 나누어 한쪽에서 다른 쪽으로 옮기고, 다시 조립해 원래대로 만드는 규칙으로 여기서 작게 나눈 데이터 단위를 패킷이라고 합니다.

인터넷에서는 정보를 전달하는 단위를 뜻하며 TCP는 패킷을 조립, 손실된 패킷을 확인하고, 재전송 하도록 요청하는 기능을 뜻합니다.

 

IP(Internet Protocol)는 인터넷상의 주소 규칙입니다.

인터넷상에 연결된 모든 컴퓨터의 위치에 규칙이 필요한데 이전에는 2⁸*4자리의 주소인 IPv4를 사용하였지만 주소가 고갈되고 있어서 16⁴*8자리인 IPv6로 전환되고 있습니다.

 

2.1 TCP / IP 4계층

OSI(Open Systems Interconnections) 7계층은 시스템들의 연결을 위한 모델입니다.

TCP/IP 4계층은 이를 웹서비스에 맞게 단순화 시킨 모델입니다.

 

좌 : OSI 7 Layer / 우 : TCP/IP 4 Layer

 1. Application Layer(응용 계층)

    - 이 계층은 네트웍을 사용하는 응용프로그램(FTP, Telnet, SMTP) 등으로 이루어지며, OSI 계층의 Aplication Layer 와 Presentation Layer 를 모두 포함한다.

 

2. Transport Layer(전송 계층)

   - 계층의 이름에서 알수 있듯이, 도착을 원하는 시스템까지 데이타를 전송하기 위한 일을 하는 게층이다. OSI 모델의 Session Layer 과 Transport Layer 를 포함하고 있으며, 각각의 시스템을 연결하고, TCP 프로토콜을 이용하여 데이터를 전송한다.

 

3. Internet Layer(인터넷 계층)

   - 데이타를 정의하고 데이타의 경로를 배정하는일(라우팅)을 담당한다. 데이타를 정확히 라우팅 하기 위해서 IP프로토콜을 사용한다. OSI 의 Network Layer 과 Data Link Layer 를 포함한다.

 

4. Physical Layer(물리 계층)

물리적 계층 즉 이더넷 카드와 같은 하드웨어를 말한다.

 

2.2 TCP/IP 4계층에 의한 데이터 전송

계층 통신의 단적인 모습(WWW)

WWW (World Wide Web)은 더이상 설멍이 필요없는 유명한 서비스로써, HTTP (HyperText Transfor Protocol)이라는 프로토콜을 이용한다.위의 그림을 설명해 보자면, 일단 사용자는 Mozilla 나 IE 같은 브라우저를 사용하여서 www.naver.com과 같은 URL 입력을 통해서 웹 페이지를 요청한다.  

 

사용자의 요청(문자)은 인터넷상에서 전달되기 용이한 패킷으로 만들기 위해서 TCP 패킷으로 만들어지게 된다.

 

이것은 다시 인터넷 상에서 원하는 주소로 이동할수 있도록 하기 위해서 IP 패킷으로 다시 만들어 지고(IP 패킷에는 자신의 주소와, 도착해야될 상대방의 주소정보가 들어있을것이다) 이것은 이더넷 카드로 보내어져서 Internet 으로 나가게 된다.

 

Internet 상에서는 원하는 주소로 TCP/IP 패킷을 보내기 위한 여러가지 장치들이 존재하는데(라우터, 토큰링 같은), 이들 장치를 통해서, www.naver.com 의 이더넷카드로 TCP/IP 패킷이 전달되게 된다.

 

그럼 이더넷 카드는 TCP/IP 패킷을 바로 윗 계층(Internet Layer)으로 보내는데, 여기에서는 IP 패킷을 분석해서, 이 패킷이 어디에서 왔으며, 그 도착지가 어디인지를 판단하게 된다.(물론 이는 IP주소 기반으로 판단한다)

 

그리하여 목적지가 자신이면 이것을 다시 Transport Layer 로 보내고, TCP 프로토콜을 사용하여, 메시지가 누락된게 있으면 다시 요청하고, 순서를 재조합하는등 통신 메시지를 검사해서 이것을 다시 Application Layer 에게 보낸다.

 

Application Layer 에서는 웹서버(IIS, Apache 같은)가 통신메시지를 HTTP 프로토콜에 준하여, 검사를 하여서 사용자가 요청한 웹페이지를 읽어들여서, Transport 계층으로 보내게 된다.

 

웹페이지를 브라우저까지 전송하는 과정은 위의 정반대의 과정을 순차적으로 거치게 된다.

 

최종적으로 웹브라우저는 웹페이지를 받아서(text) 역시 HTTP 프로토콜에 준하여, 렌더링 작업을 거친후 화면에 뿌려주게 된다.

 

위의 그림에서 보면 알겠지만 각각의 계층은 각각의 계층만을 상관하고 있음을 알수 있다.

 

즉 Application Layer 에 위치하는 브라우저와 webserver 는 HTTP 프로토콜에 의해서 자신의 계층끼리만 통신을 하고, Transport Layer 은 역시 TCP 프로토콜에 의해서 Transport Layer 끼리 통시을 함을 알수 있을것이다. 말그대로 계층적 구조를 가지며, 각 계층은 대응되는 상대편의 계층에 대해서만 상관한다.

 

 

 

 

 

 

참고 : wiki.gurubee.net/pages/viewpage.action?pageId=26739929

www.joinc.co.kr/w/Site/Network_Programing/AdvancedComm/HTTP

edium.com/@chrisjune_13837/web-http-tcp-ip-%EB%A9%94%EC%8B%9C%EC%A7%80%EB%9E%80-4b2721fe296f

www.joinc.co.kr/w/Site/Network_Programing/Documents/IntroTCPIP

 

 

 

 

 

'컴퓨터 공학 > 네트워크' 카테고리의 다른 글

프록시 란?  (0) 2020.10.24
HTTP, HTTPS  (0) 2020.10.22
Comments