본문 바로가기

CS/네트워크

HTTP, Socket, WebSocket

남양주 정약용 도서관을 개발하면서 Socket통신을 했는데 정작 왜 하는지 차이점은 뭔지 몰랐다... 알아보자

둘 다 ip, port이용해서 통신하던데 뭐가 다르지...?

→ 공부하다보니 네트워크 계층 공부까지 해야겠다. 우선 HTTP, Socket, WebSocket 부분만 간략하게 하고 알아본다.

 

HTTP, Socket, WebSocket을 공부하고 나서 파악한 사실은 다음과 같다.

HTTP통신과 Socket통신은 결국 TCP/IP 프로토콜을 기반으로 이루어진다

TCP/IP가 연결을 계속 유지하느냐 마느냐의 차이인 것이다.

→ 내가 이해한 것인데 틀리면 수정해야겠다.

 

<Socket>

Socket은 3-way-handshake라는 과정을 거치고 연결이 이루어진다.

양방향 통신이 이루어지는데 이는 클라이언트단과 서버단의 연결이 끊어지지않고 계속 연결을 유지해주어 실시간

소통이 가능하다.

 

<HTTP>

 

 

위의 글을 보면 HTTP통신은 TCP/IP 프로토콜 위에서 이루어진다. HTTP통신의 3-handshake는 TCP에서

이루어진다는 것이다.

 

HTTP통신은 TCP통신과 다르게 단방향 통신이다. 즉 http통신은 클라이언트의 요청이 있을 때만, 서버단이 응답하고

처리를 해주며 해당 응답이 끝나면 연결을 바로 끊게 된다.

 

그런데 소켓통신은 양방향통신이며 실시간 통신이 가낭하다고 했느넫 왜 http통신은 단방향 통신이 되는 것일까?

HTTP데이터 전송에 사용되는 소켓의 통신 방식이 TCP통신의 데이터전송에서 사용되는 소켓통신과는

다른 방식으로 사용되기 때문이다.

 

그렇다면 Connectionless(비연결성)stateless(무상태성)가 특징인 Http를 Connectionful하고 statefull할 수 있는

방식은 무엇일까?

 

[ http polling ][ http streaming ] 이 등장했다.

1) HTTP polling

- 클라이언트가 일정한 간격으로 서버에 요청하는 것이다. 주기적으로 요청을 보내기 때문에 서버에 상당한 부하를

   일으킬 수 있다. 또한 주기적으로 이루어지기 때문에 아직도 connectionless하며 stateless이다.

 

2) HTTP streaming

 - 클라이언트가 연결된 상태에서 서버에 요청하는 것이다. 클라이언트와 서버가 연결되면 지속적으로 연결되는

   상태인 것이다. 그러나 connection인 상태는 됐지만 http의 특징인 stateless상태는 지속된다.

   결국 stateless를 해결하기 위한 추가적인 메커니즘이 필요하다. 또한 http의 헤더는 가지고 있으므로

   기본적으로 socket통신보다는 데이터 자체가 무겁다.

 

< WebSocket >

http에서 socket통신을 하기 위한 대안점이 바로 WebSocket이다.

 

위의 그림을 보면 WebSocket이 있다. 이는 WebSocket 프로토콜이라는 새로운 규약에서 이루어진다. 

최초 접속 시 HTTP혹은 HTTPS위에서 3-way handshake를 거치고, 그 이후에 웹 소켓을 이용해야 하는 경우

HTTP Upgrade header라는 걸 사용하여 HTTP나 HTTPS프로토콜에서 WebSocket 프로토콜로 전환시킨다.

→ 기존의 http pooling과 http straming의 문제점을 해결하게 되었다.

'CS > 네트워크' 카테고리의 다른 글

IP 관련 개념 ☎  (0) 2024.06.17
[ TCP/IP 4계층 ] vs [ OSI 7계층 ] Re  (0) 2024.06.17
SEO(Search Engine Optimization)  (0) 2024.06.15
HTTPS  (0) 2024.06.15
HTTP Re  (0) 2024.06.14