HTTP

이정민·2022년 1월 3일

TIL

HTTP 기반 네트워크 흐름에 대해 이해할 수 있다.

TCP/IP 기반 네트워크 흐름에 대해 이해할 수 있다.

    TCP/IP 패킷이 왜 필요한 지 설명할 수 있다.
    TCP와 UDP의 차이에 대해 설명할 수 있다.
HTTP 기본 동작과 특징에 대해 이해할 수 있다.
    상태유지(Stateful)과 무상태(Stateless)의 개념에 대해 설명할 수 있다.
    HTTP 메시지 구성에 대해 설명할 수 있다.
HTTP 헤더의 역할에 대해 이해할 수 있다.
    표현, 콘텐츠 협상 등 다양한 헤더의 역할에 대해 알 수 있다.
캐시가 왜 필요한 지 알 수 있다.
    브라우저 캐시, 프록시 캐시에 대해 설명할 수 있다.
    조건부 요청, 캐시 무효화 방법 등을 사용할 수 있다.

IP(인터넷 프로토콜)

IP(인터넷 프로토콜)는 지정한 IP주소에 packet이라는 통신 단위로 데이터 전달
패킷은 소포에 비유할 수 있는데 우체국 송장처럼 전송 데이터를 전송하기 위해 출발지 IP, 목적지 IP와 같은 정보가 포함 (전송데이터를 전달할 수 있는 편지봉투)


<노드는 하나의 서버 컴퓨터>
클라이언트에서 패킷단위로 전송하면 노드들은 목적 IP에 도달하기 위해 서로 데이터를 전달


서버에서 데이터를 전송받으면 서버도 이에 대한 응답을 패킷으로 돌려줘야한다.

<IP프로토콜의 한계>

1.비연결성
=> 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
2.비신뢰성
=> 패킷의 순서를 보장할 수 없음
=> 중간에 있는 서버가 데이터를 전달하던 중 장애가 생겨 패킷이 중간에 소실되더라도 클라이언트는 이를 파악할 방법이 없다.

네트워크 계층 구조를 통해 이러한 한계 보완가능

socket => 네트워크 환경에 연결할 수 있게 만들어진 연결부
TCP 세그먼트 => IP패킷의 출발지 IP와 목적지IP를 보완할 수 있는 출발지PORT, 목적지 PORT, 전송제어 순서, 검증정보 등을 포함

TCP(Transmission Control Protocol)

연결지향(TCP 3 way handshake)

1. 클라이언트는 서버에 접속을 요청하는 SYN패킷을 보낸다.
2. 서버는 요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN가 설정된 패킷을 발송한다.
3. 클라이언트가 서버에게 ACK로 응답한다.
4. 이후부터는 연결이 성립되며 데이터를 전송할 수 있다.

데이터 전달 보증
=> 데이터 전송이 성공적으로 이루어진다면 이에 대한 응답을 돌려주기 때문에 IP패킷의 한계인 비연결성을 보완할 수 있다.
순서보장

신뢰할 수 있는 프로토콜

UDP(User Datagram Protocol)

-IP에 PORT, checksum field(중복 검사로 무결성 보호)정보만 추가
-기능이 거의 없음
-비 연결지향( TCP 3 way handshake X)
-데이터 전달 보증 X
-순서 보장 X
-데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
-신뢰성보다는 연속성이 중요한 서비스(e.g.실시간 스트리밍)에 자주 사용됨

=>무거운 라이브러리(TCP)와 필요한 기능만 들어있는 가벼운 라이브러리(UDP)로 비교

HTTP

-클라이언트 서버 구조
-stateless

    서버가 클라이언트의 상태를 보존하지 않음
=> 장점: 서버 확장성 높음(스케일 아웃) => 단점: 클라이언트가 추가 데이터 전송 ![](https://velog.velcdn.com/images%2Fjeongmin1625%2Fpost%2F43d65538-1fc1-4394-935e-4cb37006691f%2Fimage.png) ![](https://velog.velcdn.com/images%2Fjeongmin1625%2Fpost%2F4ea45f32-79ec-408a-b0d6-9b7d3be3f87d%2Fimage.png) 상태유지시 중간에 다른 점원으로 바뀌면 안됨 무상태일 경우 다른 점원으로 바뀌어도 됨. 갑자기 고객이 증가해도 점원을 대거투입 가능=> 즉, 갑자기 클라이언트 요청이 증가해도 서버를 대거 투입가능 => 응답서버를 쉽게 바꿀 수 있다(무한한 서버 증설 가능) -connectionless -HTTP message -단순함, 확장 가능

0개의 댓글