[소켓과 웹소켓] 한 번에 정리 (2) | 소켓과 웹소켓의 차이점, 웹소켓의 모든것, http-tcp-소켓의 상관관계

Konseo·2022년 2월 27일
14

네트워크

목록 보기
2/7

지난 시간은 소켓 위주로 정리를 해보았다. 이번 편은 웹소켓에 대해 다루어보자! 이번 기회에 소켓과 웹소켓의 차이를 확실히 알게되길 바라며...😌

TCP/IP소켓과 웹소켓의 차이

(TCP/IP) 소켓에 대한 내용은 여기서 볼 수 있다. 이제 소켓은 대충 알겠고 .. 웹소켓은 뭘까?

일단 소켓과 웹소켓은 IP와 포트를 통한 통신을 한다는 점에서는 비슷하다. 또, 둘 다 양방향 통신을 한다는 비슷한 특징을 갖고 있기도 하다.

차이점은,
웹 소켓은 HTTP 레이어에서 작동하는 소켓으로 TCP/IP 소켓의 레이어가 다르다!
그러니 두 개념은 엄연히 다르다. 같다고 혼동하지 않아야한다.

WebSocket

웹소켓은 http에서 실시간 통신을 할 수 없다는 문제를 해결하기 위해 나온 기술이다! 웹소켓의 탄생 배경이 되는, http의 특징에 대해 간략히 살펴보자.

HTTP로는 실시간 통신을 할 수 없어요

웹소켓의 탄생배경을 알기 위해선 http의 특징에 대해 짚고 넘어가야한다.

  • 비연결성 (단방향)
  • 매번 연결 맺고 끊는 과정의 비용
  • request-response 의 구조
  • 헤더의 비중이 너무 큼 → 실시간성으로 많은 데이터를 주고 받고자 하는 경우에는 매우 부담이 되는 요소 중 하나

http는 위와 같은 특징을 같고 있기 때문이다. 즉, 요청을 보내면 응답이 오는 단방향적 구조로 통신하기 때문에 TCP/IP 프로토콜을 사용하는 소켓처럼 계속 connection이 유지되는 실시간 통신을 할 수 없다. 이의 문제점을 해결하기 위해 나온것이 웹소켓 프로토콜이다.

웹소켓은 실시간 통신을 할 수 있어요

  • 연결지향 (양방향)
  • 한 번 연결 맺은 뒤 유지
  • 핸드쉐이크 과정에서는 헤더의 비중이 크지만, 한번 연결이 되면 간단한 메시지들만 오고감 → 굉장히 경제적임

웹소켓은 위와 같은 특징으로 실시간 통신을 할 수 있다. 웹소켓은 http를 대체할 수 있는 개념까진 아니고, 그저 웹에서 실시간 통신을 해야하는 상황에서 잘 쓰이는 프로토콜 중 하나라고 생각하면 된다. 위에서 언급했지만 이름부터 웹소켓이기에 http 레이어 위에서 작동한다.

웹소켓 정확히 언제 쓰지?

당연한 얘기지만 실시간 통신을 해야하는 상황에 쓴다. 아래와 같이!

case1 | B유저와 게임을 할때 타유저가 게임 action을 줄 때마다 새로고침을 해야함 → 매우 불편하겠죠? 즉, 게임할 때
case 2 | 채팅을 해야할 때
case 3 | 실시간 주식 거래 사이트를 만들 때 .. 등등

웹 소켓 동작 방법

1. 일단 손을 맞잡는다 🤝 핸드쉐이킹!

채널에 대한 정상적인 통신이 시작되기 전에 두 개의 실체 간에 확립된 통신 채널의 변수를 동적으로 설정하는 자동화된 협상과정

2. 이제 데이터를 넣을 프레임을 구성하자! Frame 구성

최초 접속에서만 http 프로토콜 위에서 핸드쉐이킹을 하기 때문에 http 헤더를 사용한다.
웹소켓을 위한 별도의 포트는 없으며 기존 포트(http-80,https-443)를 사용(호환된다는 의미)
프레임으로 구성된 메시지라는 논리적 단위로 송수신
메시지에 포함될 수 있는 교환 가능한 메시지(frame)는 텍스트와 바이너리 뿐!

웹소켓 한계

웹소켓은 html5이후에 나왔다. html5이전 기술로 구현된 서비스에서는 어떻게 해야할까?

1. Socket.io, SockJS

Socker.io, SockerJS가 html5이전의 기술로 구현된 서비스에서 웹 소켓처럼 사용할 수 있도록 도와주는 기술임. 이걸로 실시간 통신을 도와준다.

결국 브라우저와 웹서버의 종류와 버전을 파악하여 가장 적합한 기술을 선택해 웹소켓처럼 보여지게 기능을 만든다!

2. STOMP

웹소켓은 문자열들을 주고받을 수 있게 해줄 뿐 그 이상의 일은 하지 않는다. 주고 받는 문자열의 해독은 온전히 어플리케이션에 맡긴다

HTTP는 형식을 정해두었기 때문에 모두가 약속을 따르기만 하면 해석할 수 있다. 하지만 WebSocker방식은 sub-protocols을 사용해서 주고 받는 메시지의 형태를 약속하는 경우가 많음

sub-protocol로 자주 쓰이는게 STOMP

- STOMP

웹 소켓 이전의 비슷한 기술

http로도 실시간 통신을 하기 위한 다양한 방법이 존재한다.

1. http polling

서버로 일정 주기 요청 송신

cf. polling
프로그램이 충돌 회피 또는 동기화 처리 등을 목적으로 다른 프로그램의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료 처리를 하는 방식

  • real-time 통신에서는 언제 통신이 발생할지 예측이 불가능하다
  • 불필요한 request와 connection을 생성
  • 사진을 보면, 이벤트가 없는데도 요청을 하게됨. 그러면 이벤트 발생 ‘후' 응답을 받을 때까지의 대기 간극이 생김. (-) 불필요한 시간
  • real-time 통신이라고 하기 애매한할 정도의 실시간성

2. http long-polling

서버에 요청을 보내고 이벤트가 생겨 응답 받을 때까지 서버 측에서 연결을 종료하지 않는것 . 응답을 받으면 끊고 다시 재요청

cf. long-polling
클라이언트가 웹 서버에세 새로운 내용이 있는지 물어보았을 때 웹 서버에서 새로운 이벤트가 없다면 대답해 주지 않다가 새로운 내용이 생기면 이 때 대답해 주는 방식

  • 불필요한 request를 없앰(polling의 단점 일부 보완)
  • 결국 많은 양의 메세지가 쏟아질 경우 polling과 같아짐..

3. http streaming

서버에 요청 보내고 끊기지 않은 연결상태에서 끊임없이 데이터를 수신한다.

  • 클라이언트에서 서버로의 데이터 송신이 어렵다

하지만...

결과적으로 이 모든 방법이 HTTP를 통해 통신하기 때문에 Request, Response 둘다 Header가 불필요하게 큼 (빠르게 데이터를 주고받아야할 때에는, 이게 걸림돌이 될 수 있다는 의미)

근데... http는 왜 단방향 통신일까?

사실 글을 정리하면서, 웹프로토콜인 http와 tcp의 차이를 명료하게 이해할 수 없었다. 왜냐면 http 프로토콜은 기본적으로 TCP/IP 위에서 동작한다고 배웠다. 그런데 TCP 서버 구성을 할때 소켓을 이용해 실시간 통신을 하는데 왜 http 프로토콜을 얹으면 단방향적 구조로 통신하게 되는거지..? 라는 의문이 들었다. http 특징 자체가 단방향 통신이란 건 알겠는데... 애초에 TCP기반으로 만든 프로토콜인 http가 왜 실시간 통신이 안되는 지 자체가 이해가 안갔다.

http는 connectionless하고 tcp는 connection oriented한데 어떻게 tcp위에 http가 있을 수 있지?

일단 구글링을 해본 결과 내가 내린 결론은 관점에 따라 다르다 이다.

http는 tcp 위에서 만들어진다. 즉 소켓을 양끝단으로 하는 tcp 레이어 위에 존재하는 프로토콜이다. 아무리 'http vs socket'에 관하여 설명하는 글이 많다 할지라도 http가 tcp 위에 만들어졌으니 HTTP 또한 소켓 통신을 활용한 방식이라고 볼 수 있지 않느냐에 대한 물음에 대한 답은 '그렇다'일것 이다.

하지만 통신에는 계층이 있다. http와 소켓은 다른 프로토콜을 가지고 있고, 엄연히 다른 계층에서 동작한다. 일반적으로 사용하는 소켓통신(tcp통신)은 4계층에서 시작하여 패킷이 생성되고, http 통신의 경우 7계층에서부터 시작하여 패킷이 생성된다.

따라서 4계층 관점으로 본다면 이 둘은 연결지향적 통신이 되는 것이고,
7계층 관점에서 본다면 http는 비연결, socket 통신은 연결지향적이 되는 것
이다.

ㅎ... 넷응설 수업들으면서 이 의문에 대해 확실히 해결해보고 싶다.

참고자료
https://hwan-shell.tistory.com/271
https://bitcodic.tistory.com/151
https://medium.com/@hyun.sang/network-%EC%86%8C%EC%BC%93%EA%B3%BC-%EC%9B%B9%EC%86%8C%EC%BC%93%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90-b1b745fcdcc2

profile
둔한 붓이 총명함을 이긴다

66개의 댓글

comment-user-thumbnail
2024년 10월 15일

I’m stirred along with the surpassing and additionally preachy list of you ought to produce such smaller timing. slot hoki

답글 달기
comment-user-thumbnail
2024년 10월 15일

That is the amazing piece of writing, Thanks a lot for the purpose of rendering everybody this. Have post. łóżka piętrowe

답글 달기
comment-user-thumbnail
2024년 10월 16일

I can see that you are an expert at your field! I am launching a website soon, and your information will be very useful for me.. Thanks for all your help and wishing you all the success in your business. About Scott Keever

답글 달기
comment-user-thumbnail
2024년 10월 16일

Thank you again for all the knowledge you distribute,Good post. I was very interested in the article, it's quite inspiring I should admit. I like visiting you site since I always come across interesting articles like this one.Great Job, I greatly appreciate that.Do Keep sharing! Regards, Sanitär Thalwil

답글 달기
comment-user-thumbnail
2024년 10월 19일

Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenters here! It’s always nice when you can not only be informed, but also entertained! 오산출장안마

답글 달기
comment-user-thumbnail
2024년 10월 19일

When you use a genuine service, you will be able to provide instructions, share materials and choose the formatting style. 해외문자

답글 달기
comment-user-thumbnail
2024년 10월 19일

Thank you for the update, very nice site.. kinggame

답글 달기
comment-user-thumbnail
2024년 10월 20일

Berkahslot offers players an exciting online betting experience, with casino games, slots, and poker. Licensed and reliable, the platform provides 24/7 customer service to ensure all players can enjoy safe, secure gaming with big potential winnings. BERKAHSLOT

답글 달기
comment-user-thumbnail
2024년 10월 21일

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. 발로란트 듀오

답글 달기
comment-user-thumbnail
2024년 10월 22일

The following is the perfect posting I actually found as a consequence of promote them. It's really just what exactly Needed to check out anticipation around long run you are going to continue on to get spreading this sort of great posting. free movies

답글 달기
comment-user-thumbnail
2024년 10월 23일

If you are looking for more information about flat rate locksmith Las Vegas check that right away. 서든SP판매

답글 달기
comment-user-thumbnail
2024년 10월 23일

Excellent publish, Thanks with regard to discussing This particular understanding. Wonderfully created post, if perhaps just about all writers provided exactly the same degree of content material while you, the web will be a far better location. Make sure you continue the good work! 항공 주차대행

답글 달기
comment-user-thumbnail
2024년 10월 23일

Literally Document look at the software yesterday evening still I had produced a lot of emotions relating to this now I needed to read the software once as it is relatively well crafted. 전화 대행

답글 달기
comment-user-thumbnail
2024년 10월 24일

Very informative post! There is a lot of information here that can help any business get started with a successful social networking campaign. 동해 유흥

답글 달기
comment-user-thumbnail
2024년 10월 24일

Please share more like that. countdown giorni

답글 달기
comment-user-thumbnail
2024년 10월 26일

This is my first visit to your web journal! We are a group of volunteers and new activities in the same specialty. Website gave us helpful data to work. IPTV free trial UK

답글 달기
comment-user-thumbnail
2024년 10월 26일

thanks for the tips and information..i really appreciate it.. 강릉 노래빠

답글 달기
comment-user-thumbnail
2024년 10월 28일

Many thanks with regard to supplying current improvements concerning the issue, We anticipate study much more. 주문진 비지니스룸

답글 달기
comment-user-thumbnail
2024년 10월 28일

Ich denke, dass dies ein informativer Beitrag ist, der sehr nützlich und sachkundig ist. Deshalb möchte ich Ihnen für die Bemühungen danken, die Sie beim Schreiben dieses Artikels unternommen haben. günstige sexpuppen

답글 달기
comment-user-thumbnail
2024년 10월 28일

Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work. 1xbet

답글 달기
comment-user-thumbnail
2024년 10월 28일

In fact My partner and i examine that last night yet I needed several feelings regarding it and after this I desired to learn that once more due to the fact it is extremely well written. 횡계 레깅스룸

답글 달기
comment-user-thumbnail
2024년 10월 29일

This seems amazing to see this kind of educational as well as distinctive content articles in your web sites. 속초 텐카페

답글 달기
comment-user-thumbnail
2024년 10월 30일

I have read all the comments and suggestions posted by the visitors for this article are very fine,We will wait for your next article so only.Thanks! 평창 퍼블릭

답글 달기
comment-user-thumbnail
2024년 10월 30일

Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenters here! It’s always nice when you can not only be informed, but also entertained! 1win giriş

답글 달기
comment-user-thumbnail
2024년 10월 30일

Excellent article. Very interesting to yasbet read. I really love to read such a nice article. Thanks! keep rocking.

답글 달기
comment-user-thumbnail
2024년 10월 31일

Please share more like that. meilleur code promo 1xbet

답글 달기
comment-user-thumbnail
2024년 10월 31일

Your own songs is actually incredible. You've a few really gifted designers. We desire a person the very best associated with achievement. the orie condo

답글 달기
comment-user-thumbnail
6일 전

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. 스포츠중계

답글 달기
comment-user-thumbnail
6일 전

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. 먹튀검증

답글 달기
comment-user-thumbnail
6일 전

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. 바카라 커뮤니티

답글 달기
comment-user-thumbnail
6일 전

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. 토토사이트

답글 달기
comment-user-thumbnail
6일 전

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. 메이저사이트 

답글 달기
comment-user-thumbnail
6일 전

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. 먹튀사이트

답글 달기
comment-user-thumbnail
6일 전

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. 안전놀이터

답글 달기
comment-user-thumbnail
6일 전

Literally Document look at the software yesterday evening still I had produced a lot of emotions relating to this now I needed to read the software once as it is relatively well crafted. 양양 룸빠

답글 달기
comment-user-thumbnail
6일 전

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. 하조대 퍼블릭

답글 달기
comment-user-thumbnail
5일 전

Nice to read your article! I am looking forward to sharing your adventures and experiences. แทงบอลสเต็ป

답글 달기
comment-user-thumbnail
5일 전

Definitely stable, brilliant, fact-filled facts in this article. Ones threads Do not sadden, and this absolutely is true in this article likewise. People generally produce a motivating understand. Would you say to Now i am fascinated?: )#) Sustain the great articles or blog posts. 정동진 텐프로

답글 달기
comment-user-thumbnail
5일 전

Fine Posting, We're an important believer around writing commentary for web pages so that you can allow the site freelancers realise that they’ve increased a little something valuable so that you can the ether! funny thong xl

답글 달기
comment-user-thumbnail
5일 전

When you use a genuine service, you will be able to provide instructions, share materials and choose the formatting style. indirizzo IP

답글 달기
comment-user-thumbnail
5일 전

I actually pleasantly surprised together with the study you actually manufactured to make this special upload unbelievable. Excellent hobby! iptv utan box

답글 달기
comment-user-thumbnail
4일 전

Fine Posting, We're an important believer around writing commentary for web pages so that you can allow the site freelancers realise that they’ve increased a little something valuable so that you can the ether! Visit Now

답글 달기
comment-user-thumbnail
4일 전

Le code promo 1xBet: 1XBIG777 bonus jusqu'à $130 sur les paris sportifs et jusqu'à $1,500 et 150 tours gratuits sur le casino. En premier, le bonus d’inscription ou de bienvenue est réservé aux utilisateurs qui s’inscrivent sur le bookmaker. Le bonus proposé couvre les dépôts effectués avec des pièces numériques, notamment Ethereum et Bitcoin. 1xbet sénégal

답글 달기
comment-user-thumbnail
4일 전

This blog is really great. The information here will surely be of some help to me. Thanks!. slot maxwin jasacuan deposit 10 ribu

답글 달기
comment-user-thumbnail
3일 전

You’ve got some interesting points in this article. I would have never considered any of these if I didn’t come across this. Thanks!. ft lauderdale translation services

답글 달기
comment-user-thumbnail
3일 전

Your content is nothing short of brilliant in many ways. I think this is engaging and eye-opening material. Thank you so much for caring about your content and your readers. buy synthetic cannabinoids

답글 달기
comment-user-thumbnail
3일 전

Hi, I find reading this article a joy. It is extremely helpful and interesting and very much looking forward to reading more of your work.. 슬롯사이트

답글 달기
comment-user-thumbnail
3일 전

Use 1xbet promo code: 1XBIG777 to benefit from a very interesting welcome bonus in 2024. You can get a 200% bonus up to $130 on sports and up to $1,500 and 150 free spins on the casino. The code is to be used when you register, it can be used no matter which country in Africa you live in, so take advantage of it. 1xbet promo code list

답글 달기
comment-user-thumbnail
3일 전

It is a fantastic post – immense clear and easy to understand. I am also holding out for the sharks too that made me laugh. Buy magic mushroom online in the US

답글 달기
comment-user-thumbnail
3일 전

Thank you a bunch for sharing this with all of us you actually realize what you are talking about! Bookmarked. Please also seek advice from my site =). We could have a hyperlink change contract between us! []The Larkin Protocol(https://share.evernote.com/note/93b890cd-fad5-4a38-9554-60208a4ff336)

답글 달기
comment-user-thumbnail
3일 전

I wish more authors of this type of content would take the time you did to research and write so well. I am very impressed with your vision and insight. algorithmic trading

답글 달기
comment-user-thumbnail
2일 전

If more people that write articles really concerned themselves with writing great content like you, more readers would be interested in their writings. Thank you for caring about your content. 카지노사이트

답글 달기
comment-user-thumbnail
2일 전

Awesome article, it was exceptionally helpful! I simply began in this and I'm becoming more acquainted with it better! Cheers, keep doing awesome! Research materials

답글 달기
comment-user-thumbnail
2일 전

Awesome article, it was exceptionally helpful! I simply began in this and I'm becoming more acquainted with it better! Cheers, keep doing awesome! information

답글 달기
comment-user-thumbnail
2일 전

Hey There. I found your blog using msn. This is a very well written article. I’ll be sure to bookmark it and come back to read more of your useful info. Thanks for the post. I’ll definitely return. read more

답글 달기
comment-user-thumbnail
2일 전

Hey There. I found your blog using msn. This is a very well written article. I’ll be sure to bookmark it and come back to read more of your useful info. Thanks for the post. I’ll definitely return. check here

답글 달기
comment-user-thumbnail
2일 전

Thanks For sharing this Superb article.I use this Article to show my assignment in college.it is useful For me Great Work.토토사이트

답글 달기
comment-user-thumbnail
2일 전

This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free. 먹튀사이트

답글 달기
comment-user-thumbnail
2일 전

This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free. 먹튀보증

답글 달기
comment-user-thumbnail
2일 전

This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free. 먹튀보증

답글 달기
comment-user-thumbnail
2일 전

Thanks for taking the time to discuss this, I feel strongly about it and love learning more on this topic. If possible, as you gain expertise, woul 루피카지노d you mind updating your blog with extra information? It is extremely helpful for me.

답글 달기
comment-user-thumbnail
2일 전

Awesome article, it was exceptionally helpful! I simply began in this and I'm becoming more acquainted with it better! Cheers, keep doing awesome! 슬롯사이트

답글 달기
comment-user-thumbnail
2일 전

This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free. 무료슬롯

답글 달기
comment-user-thumbnail
2일 전

You make so many great points here that I read your article a couple of times. Your views are in accordance with my own for the most part. This is great content for your readers. 토토사이트

답글 달기
comment-user-thumbnail
2일 전

The audio will be awesome. You might have several extremely skilled performers. My partner and i want an individual the most effective regarding accomplishment. 제주도호빠

답글 달기
comment-user-thumbnail
어제

Really a great addition. I have read this marvelous post. Thanks for sharing information about it. I really like that. Thanks so lot for your convene. Jim Crane Houston

답글 달기