TCP란?

  • 계층으로 말하자면 트랜스포트(전송) 계층에 해당된다.
  • 신뢰성있는 바이트 스트림 서비스를 제공한다.

    바이트 스트림 서비스: 용량이 큰 데이터를 보내기 쉽게 TCP 세그먼트라는 단위 패킷으로 작게 분해하여 관리하고 상대에게 서비스한다

결론

  • TCP는 대용량의 데이터를 보내기 쉽게 작게 분해하여 상대에게 보내고 정확하게 도착했는지 확인하는 역할을 한다.

쓰리웨이 핸드셰이킹(Three way handshakiing)

  • 상대에게 확실하게 데이터를 보내기 위한 방법.

  • 패킷을 보낸 뒤 확실하게 보내졌는지 여부를 상대에게 확인한다.

    • 'SYN'와 'ACK'라는 TCP플래그를 사용한다.
    1. 송신측에서 최초 'SYN' 플래그로 상대에게 접속함과 동시에 패킷을 보낸다.
    2. 수신측에서 'SYN/ACK' 플래그로 송신측에 접속함과 동시에 패킷을 수신한 사실을 전한다.
    3. 마지막으로 송신측이 'ACK' 플래그를 보내 패킷 교환이 완료되었음을 전한다.
  1. HTTP는 클라이언트와 서버 간에 통신을 한다.

    • 리소스가 필요하다고 하는 쪽이 클라이언트, 리소스를 제공하는 쪽이 서버.
    • 한 번의 통신에서 반드시 한 쪽은 클라이언트, 다른 한 쪽은 서버의 역할.
  2. 리퀘스트와 리스폰스를 교환하여 성립

    • 클라이언트 측에서 리퀘스트

    • 서버 측에서 리스폰스

    • 리퀘스트를 수신해야 리스폰스를 송신한다.

    • 리스폰스 메세지 구성

      HTTP/1.1 200 OK                        | 프로토콜버전 / 상태코드 / 상태코드설명
      Date: Tue, 10 Jul 2012 06:50:15 GMT    |
      Content-Length: 352                    | 리스폰스 헤더 필드
      Content-Type: text/html                |
      
      <html>                                   | 바디         
      ...                                       |
      
  1. HTTP는 상태를 유지하지 않는 프로토콜

    • stateless 프로토콜.
    • 이전에 보낸 리퀘스트나 리스폰스에 대해 전혀 기억하지 못함.
    • 새로운 리퀘스트 -> 새로운 리스폰스
    • 무상태 특성만으로는 처리하기 힘든 일이 있다. 따라서 쿠키가 등장.
  2. 리퀘스트 URI로 리소스를 식별

    • 클라이언트는 리소스를 호출할 때마다 리퀘스트를 송신할 때 리퀘스트 안에 URI를 리퀘스트 URI라고 불리는 형식으로 포함해야한다.

      • https://gracelove.me/index.html

        • 모든 URI를 리퀘스트 URI에 포함하는 방법.

          GET https://gracelove/index.html HTTP/1.1
          ...
        • Host 헤더 필드에 네트워크 로케이션을 포함하는 방법.

          GET /index.html HTTP/1.1
          Host: gracelove.me
          ...
  3. HTTP 메서드

    • GET
      • 리소스 획득.
      • 리퀘스트 URI로 식별된 리소스를 가져올 수 있도록 요구.
      • 가져올 리소스 내용은 지정된 리소스를 서버가 해석한 결과.
    • POST
      • 엔티티를 전송하기 위해 사용
    • PUT
      • 파일전송
      • FTP에 의한 파일 업로드와 같이 리퀘스트 중 포함된 엔티티를 리퀘스트 URI로 지정한 곳에 보존하도록 요구
      • HTTP/1.1 PUT에는 자체 인증 기능이 없으므로, 웹어플리케이션의 인증 기능과 함꼐 쓰거나, REST와 같이 웹끼리 연계하는 설계 양식을 사용할 떄 이용.
    • HEAD
      • 메시지 헤더 취득
      • GET과 같은 기능이지만 메시지 바디는 돌려주지 않음.
      • URI유효성과 리소스 갱신 시간을 확인 목적 등에 쓰임.]
    • DELETE
      • 파일삭제
      • PUT 메소드와는 반대로 동작.
      • 리퀘스트 URI로 지정된 리소스의 삭제를 요구
      • 역시 인증기능 없으므로 일반적인 웹 사이트에서 사용x
    • OPTIONS
      • 리퀘스트URI로 지정된 리소스가 제공되고 있는 메서드를 조사하기 위해 사용.
      • 리스폰스로 서버가 제공하고있는 메소드를 되돌려줌.

우리가 브라우저에 URL을 입력하여 웹서버에 리소스 등등을 요청한다. (Request)
그 웹서버에서 응답이 돌아와서 웹페이지가 표시된다. (Response)
이런 클라이언트에서 서버까지의 통신 흐름을 결정하고 있는 것이 HTTP 프로토콜(약속)이다.

프로토콜

  • 상호통신을 위해서는 서로 같은 방법을 사용해야한다. 어떻게 상대를 찾을 것이며, 어떤 언어로 통신을 할 것이며 등등..이러한 규칙을 프로토콜이라한다.

HTTP 프로토콜과 관련된 프로토콜들.


TCP / IP

인터넷과 관련된 프로톨콜들을 모은 것을 TCP/IP라 한다.

1. 계층형구조.

  • 인터넷이 하나의 프로토콜로 이루어졌다면, 어디선가 사양이 변경됐을 때, 전체를 바꿔야한다.
  • 하지만 계층형구조는 사양이 변경된 해당계층만 바꾸면된다.

  • 애플리케이션계층

    유저에게 제공되는 애플리케이션에서 사용하는 통신의 움직임을 결정한다. FTP, DNS, HTTP도 이 계층에 포함된다.

  • 트랜스포트계층

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

  • 네트워크계층(인터넷계층)

    네트워크 상에서 패킷의 이동을 다룬다. (패킷? 전송하는 데이터의 최소단위) 데이터가 목적지에 도착하기까지 여러 대의 컴퓨터와 네트워크 기기를 거쳐서 가게 되는데, 그 중간 목적지를 결정하는 역할도 한다.

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

    네트워크에 접속하는 하드웨어적인 면을 다룬다.(디바이스 드라이버, 네트워크 인터페이스카드, 심지어는 케이블과 같은 물리적인 요소도 포함)

2. TCP/IP의 흐름

'도서 > 그림으로 배우는 HTTP&Network Basic' 카테고리의 다른 글

신뢰성을 담당하는 TCP  (0) 2019.12.09
간단한 프로토콜 HTTP  (0) 2019.12.01

+ Recent posts