✍个人博客:https://blog.csdn.net/Newin2020?type=blog
📣专栏地址:http://t.csdnimg.cn/fYaBd
📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪
📝推荐参考地址:https://www.xiaolincoding.com/(这个大佬的专栏非常有用!)
136. 假设一台机器加入组播地址,需要把 IP 改成组播地址吗?如果离开某个组播地址,需要 DHCP 重新请求个 IP 吗?
组播地址不是用于机器 IP 地址的,因为组播地址没有网络号和主机号,所以跟 DHCP 没关系。组播地址一般是用于 UDP 协议,机器发送 UDP 组播数据时,目标地址填的是组播地址,那么在组播组内的机器都能收到数据包。
是否加入组播组和离开组播组,是由 socket 一个接口实现的,主机 IP 是不用改变的。
137. 什么是 WebSocket?
WebSocket 协议是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信,即允许服务器主动发送信息给客户端。因此,在 WebSocket 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输,客户端和服务器之间的数据交换变得更加简单。
应用场景:弹幕、在线教育、体育实况更新、视频会议和聊天等等。
总结:
- TCP 协议本身是全双工的,但我们最常用的 HTTP/1.1,虽然是基于 TCP 的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的 WebSocket 协议。
- 在 HTTP/1.1 里,只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送 (comet) 的效果。
- 对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用 WebSocket 协议。
- WebSocket 和 socket 几乎没有任何关系,只是叫法相似。
- 正因为各个浏览器都支持 HTTP 协议,所以 WebSocket 会先利用 HTTP 协议加上一些特殊的 header 头进行握手升级操作,升级成功后就跟 HTTP 没有任何关系了,之后就用 WebSocket 的数据格式进行收发数据。
138. Websocket 和 http 的区别
1、含义不同
websocket:WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。
http:超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在 TCP 之上,是单向的通信协议。
2、连接方式不同
websocket:WebSocket 是需要浏览器和服务器握手进行建立连接的。
http:http 是浏览器发起向服务器的连接,服务器预先并不知道这个连接。
3、连接长度不同
websocket:websocket 是持久连接。
http:http 是短连接 (http 可以通过 Ajax 一直发送请求和长轮询保持一段时间内的连接,但本质上还是短连接)。
4、连接状态不同
websocket:websocket 是有状态的双向连接。
http:http 是无状态的单向连接。
5、协议开头不同
websocket:websocket 的协议是以 ws/wss 开头。
http:http 对应的是 http/https。