HTTP통신이란?
Hyper Text Transfer Protocol 하이퍼_본문_전송_규약
웹 서버와 웹 클라이언트 간의 통신을 위한
TCP/IP 4계층중 4계층인 응용(application)계층의 프로토콜.
[사용자가 웹브라우저를 통해 웹페이지를 요청하고
웹브라우저는 해당 요청을 서버에 전송한다
서버는 요청받은 웹페이지를 클라이언트에게 전송한다.]
해당 프로토콜을 HTTP라 부른다.
디폴트로 무상태 프로토콜이기 때문에
연결을 계속 유지하지 않는다.
(요청->응답->통신끊음)
HTTP의 header에는 요청,응답,엔티티등 통신에 필요한 여러 정보를 담는다.
TCP통신이란?
한 컴퓨터와 다른 컴퓨터(클라이언트와 서버)사이에서
양방형으로의 통신을 위한 프로토콜이다.
해당 프로토콜은 4계층중 3계층인 전송(transport)계층에 속한다.
HTTP통신과는 다르게 통신 상태가 확인된후
가능하면 연결을 유지한다.
TCP의 헤더에는 port,sequence number,data offset,flags,option등의 정보를 담는다.
해당 프로토콜은 데이터 손실을 줄이기 위해 설계된 것으로
헤더에 데이터에 관한 자세한 정보들이 담긴다.
나누어서 설명했으나 HTTP는 TCP같은 전송계층을 기반으로 하는 프로토콜이다.
위의 차이점이 있을뿐이다.
(자세히 말하자면 HTTP/1과 HTTP/2는 TCP로, HTTP/3는 UDP를 기반으로 하는 QUIC로 통신한다.)
QUIC는 UDP를 경유하는 다중화 연결을 사용하는데
HOL(헤드 오브 라인 블로킹) 문제가 발생하는 TCP를 사용하는 것보다 성능이 좋다.
Socket통신이란?
Socket(소켓)이란 네트워크 통신을 가능하게 하는 인터페이스다.
(인터페이스이므로 네트워크 통신 계층에 속하지 않는다.)
특정 port를 통해 소켓을 열고 다른 컴퓨터에서 소켓에 연결한후 통신을 한다.
이때 데이터를 전달하는 방식은 전송(transport)계층에 속하는 TCP 또는 UDP를 이용한다.
각각 TCP는 스트림 소켓, UDP는 데이터그램 소켓이라고 부른다.
TCP가 신뢰성을 위해 설계된 것과 달리
UDP는 TCP의 신뢰성기능을 제외하여 확인응답이 없어 데이터가 손실될 수 있다.
그러나 UDP는 최대한 빠르게 통신하는 것을 목적으로 설계되어
용량이 가볍고 매우 빠른 속도를 낼 수 있어 실시간 스트리밍에 많이 사용된다.
그러나 속도를 제어할 수 없기 때문에 대역폭을 소수가 점유할 수 있기에
네트워크 관리자측에서 강제로 제어를 따로 해줘야한다.
TCP작동원리)
1.소켓 생성:서버와 클라이언트 각각 소켓 생성
2.소켓 바인딩:서버는 생성된 소켓을 특정 IP와 Port에 바인딩
3.리스닝:서버 소켓이 클라이언트의 연결 요청 대기
4.연결 수락:서버가 클라이언트 연결 요청 수락후 새로운 소켓 성립
5.데이터 전송:연결된 소켓으로 데이터 주고받음
6.소켓종료:전송완료시 연결된 소켓 종료
UDP작동원리)
1.소켓 생성:서버와 클라이언트에서 소켓생성(서버와 클라이언트를 구분하지 않아도 된다.)
2.소켓 바인딩:클라이언트에서 소켓에 주소를 설정함
(클라이언트에서 데이터를 보내어 수신을 받으면
자동으로 서버에서도 바인딩 되어 서버에서도 데이터를 보낼 수 있다.)
3.데이터 전송:sendto로 데이터를 보내고 recvfrom로 데이터를 받는다
OSI 7계층은 장비개발과 네트워크 통신 표준화를 위한 개념적인 성향의 모델
TCP/IP 4계층은 실제 인터넷 통신에서 기반이 되는 모델