전체적인 작동원리

대략적인 작동원리는 위와같다 그렇다면 http와 ip는 무엇일까?

 

 

HTTP

1.무상태성(stateless)
기본적으로 요청과 응답으로 이루어짐
요청과 응답이 독립적임
응답을 보내고나면 요청을 기억하지않음
상태를 기억하지않는다.
2.비연결성
클라이언트와 서버가 연결되어있지않음

aws같은거쓰면 쓰면쓸수록 돈이 많이나옴

http 초기 -연결,종료,낭비
연결할때마다 요청이 갈때마다 3way가 들어가는건 너무 비효율적임

http 1.1버젼부터는 지속적 연결을 하는모습을 볼 수 있음
일정시간동안 계속 데이터를 주고받을 수 있음
Keep-alive 헤더라는 통해서 할수있고
http2.0부터는 내장되어있어서 defalut 값으로 쓸수있음

http3.0부터는 udp라는 프로토콜을사용함(엄청빠름)
첫연결시도에 데이터를 전송가능함
근데불완전함

QUIC가 뭐임?
퀵유디피인터넷커넥션 

설명 :QUIC ( Quick UDP Internet Connections ) 프로토콜은 Google을 통해 개발이 진행되었고, 지금은 표준 등록을 위해 준비한 따끈따끈한 프로토콜이라고 합니다. 2014 년에 그들은 Google 서비스, Chrome 및 모바일 앱에 대한 배포를 시작했습니다. 현재 QUIC는 모든 Google 관련 제품의 기본 프로토콜로 쓰이고 있습니다.

출처: https://musclebear.tistory.com/51 [곰돌이의 데이터 기록부]

QUIC는 딴애들보다 빨라서 사용함


헤더는 표현헤더와 요청헤더로 나뉜다



표현헤더(데이터를 어떻게 표현할꺼냐?) 뭐가 담겼으면 좋겠는지 다는거임
Content-Encoding:gzip 데이터어떻게 압축할꺼임
Content-type: 표현데이터형식
요청헤더->협상헤더(우선순위를 정하는거임)라고 부름 accept같은거 여기다씀


바디
데이터가담김 (별거없는듯)

 

ip(internet protocole)

1.작은거를 한꺼번에 이동시키는거
2.출발지와 ip어드레스로 정해주기때문에
정확하고 추적이가능하다.

비연결성과
->패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송 클라이언트는 서버의 상태를 파악할 방법이 없기 때문에 패킷을 그대로 전송하게됍니다.
비신뢰성의 단점이 존재함
->중간에 있는 서버가 데이터를 전달하던 중 장애가 생겨 패킷이 중간에 소실되더라도 클라이언트는 이를 파악할 방법이 없습니다. 또한 전달 데이터의 용량이 클 경우 이를 패킷 단위로 나눠 데이터를 전달하게 되는데 이때 패킷들은 중간에 서로 다른 노드를 통해 전달될 수 있습니다. 이렇게 되면 클라이언트가 의도하지 않은 순서로 서버에 패킷이 도착할 수 있습니다. 

전송제어 프로토콜
인터넷 계층위에 전송계층을 전달하는함

TCP는 어떻게 데이터를 전송하느냐


3way 핸드쉐이크을통해

1.연결통로를 뚫어서
2.이사이에서 데이터를 주고받음
이런걸 연결지향형이라고함

1.데이터를 보내도 되냐? 클라이언트->SYN(싱크)->서버
2.서버 -> SYN+ACK(연결해도됌) ->클라이언트
3.클라이언트 -> ACK-> 서버
ACK를 받게되면 서로 데이터 전송이 가능하게됌
1.서버가 살아있음을 알수있게됌
2.서로가 살아있음을 알게됌으로써 
연결통로가 열리게됌

TCP작동원리

UDP는 데이터를 어떻게 전송하느냐

데이터를 데이터단위로 처리하는 프로토콜 이라는 뜻

여기서 데이터그램이란 독립적인 관계를 지니는 패킷이라는 뜻으로, UDP의 동작방식을 설명하자면 다음과 같습니다.

위에서 대충 눈치채셨듯이 TCP와 달리 UDP는 비연결형 프로토콜입니다. 즉, 연결을 위해 할당되는 논리적인 경로가 없는데, 

그렇기 때문에 각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 되는데 이렇게 데이터를 서로

다른 경로로 독립적으로 처리하게 되고, 이러한 프로토콜을 UDP라고 합니다. 


위그림처럼 그냥보내기만함

그래서 신뢰성이 요구되는 애플리케이션에서는 TCP를 사용하고 간단한 데이터를 빠른 속도로 전송하고자 하는 애플리케이션에서는 UDP를 사용함.

 

TCP와 UDP의 차이점

 

복사했습니다!