1.理解什么是协议,了解TCP/IP网络协议族的构成,每层协议在应用程序中发挥的作用
电脑要通讯就必须遵守共同的规则
国际标准化组织(ISO)定义了网络协议的基本框架,被称为OSI模型。要制定通讯规则,内容会很多,比如要考虑A电脑如何找到B电脑,A电脑在发送信息给B电脑时是否需要B电脑进行反馈,A电脑传送给B电脑的数据的格式又是怎样的?内容太多太杂,所以OSI模型将这些通讯标准进行层次划分,每一层次解决一个类别的问题,这样就使得标准的制定没那么复杂。
OSI模型制定的七层标准模型,分别是:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
TCP/IP 是一个协议族,也是按照层次划分。共四层:应用层,传输层,互连网络层,网络接口层。
TCP/IP协议中的应用层协议,就对应于OSI中的应用层,表示层,会话层
主要关注应用层和传输层的协议就可以了。
1.什么是socket?
以前有听说过socket编程这种说法,也有的说套接字编程。我在搜索关于socket的资料时,发现有的说socket是指一个连接,有的说socket是一指一个端点。拿打电话做比喻,A电话机和B电话机正在通话,那么socket是指的A和B之间的连接线呢,还是指电话机(端点)?
我现在的理解是,socket就是一个连接中的一个端点,一次通讯(连接)a,b端都会有一个socket。一个socket对应一个连接。
2.http协议属于应用层还是传输层?
http 超文本传送协议,听上去像是传输层的协议一样。但事实上大家都知道http和ftp一样都是属于应用层的协议,
2.三次握手和四次挥手详细原理,为什么要使用这种机制
三次握手建立连接
四次挥手关闭连接
第四次挥手是确保服务端---->客户端之间的传输是没有问题的。是一个必要的过程
断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发。
理解WebSocket协议的底层原理、与HTTP的区别
Socket原理:
服务端有一个进程(或者多个进程)在指定端口等待客户来连接,服务程序等待客户的连接信息,一旦连接上之后,就可以按设计的数据交换方法和格式进行数据传输。客户端在需要的时刻发出向服务器端的连接请求。
socket是TCP/IP进程间通讯的底层实现bai(当然,socket只是duipc中的一种,此zhi外还有消息队列、信号灯、共享dao内存等很多手段)。
http(s)是在socket之上封装的一种上层通讯协议,其特点是:
服务端监听通讯,被动提供服务;客户端主动向服务端发起连接请求,建立起通讯。
每一次交互都是:客户端主动发起请求(request),服务端被动应答(response)。
服务端不能主动向客户端推送数据。
通信的数据是基于文本格式的。二进制数据(比如图片等)要利用base64等手段转换为文本后才能传输。
websocket也是在socket之上封装的一种上层通讯协议,其特点是:
websocket通讯的建立阶段是依赖于http协议的。最初的握手阶段是http协议,握手完成后就切换到websocket协议,并完全与http协议脱离了。
建立通讯时,也是由客户端主动发起连接请求,服务端被动监听。
通讯一旦建立连接后,通讯就是“全双工”模式了。也就是说服务端和客户端都能在任何时间自由得发送数据,非常适合服务端要主动推送实时数据的业务场景。
交互模式不再是“请求-应答”模式,完全由开发者自行设计通讯协议。
通信的数据是基于“帧(frame)”的,可以传输文本数据,也可以直接传输二进制数据,效率高。当然,开发者也就要考虑封包、拆包、编号等技术细节。
HTTP:每一次数据传输都需要有一个HTTP头部,头部的大小不一,可能只有几百B,也可能有几千B。
WebSocket只有在进行连接的时候需要发送一个HTTP请求,之后就再也不需要发送纷繁的HTTP头部信息,光从字节数上就减少了很多。而在关闭WebSocket的过程中,也不需要像建立握手的时候那么繁杂,只需要传送一个特定的字节码0×8的关闭帧就行,服务端收到之后,需要响应一个关闭帧到客户端。
WebSocket可以一直保持连接,通过Socket通道传输数据,节省掉了建立连接需要耗费的时间。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。