通信协议
共 2302字,需浏览 5分钟
·
2022-05-14 11:23
-Start:关注本公众号后,可直接联系后台获取排版美化的详细文档!
-Hints:本篇文章所编纂的资料均来自网络,特此感谢参与奉献的有关人员。
网络分层协议
传输层协议区别:
TCP:传输控制协议
a 数据传输前必须要建立连接,数据传输完,必须释放连接。
b 传输的数据无差错,不丢失,不重复,且顺序和源数据一致。
c 在传输的过程中,数据拆分为不同的段,也就是segment。
d 效率低,因为是面向连接的协议,通信之前必须要建立连接。
TCP【打电话】
TCP 是一种面向有连接的传输层协议,能够对自己提供的连接实施控制。适用于要求可靠传输的应用,例如文件传输。面向字节流,传输慢
UDP【发短信】
UDP 是一种面向无连接的传输层协议,不会对自己提供的连接实施控制。适用于实时应用,例如:IP电话、视频会议、直播等。
Socket
Socket就像一个电话插座,负责连通两端的电话,进行点对点通信,让电话可以进行通信,端口就像插座上的孔,端口不能同时被其他进程占用。而我们建立连接就像把插头插在这个插座上,创建一个Socket实例开始监听后,这个电话插座就时刻监听着消息的传入,谁拨通我这个“IP地址和端口”,我就接通谁。
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。
本地进程间通信:
消息传递(管道、FIFO、消息队列)
同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量)
共享内存(匿名的和具名的)
远程过程调用(Solaris门和Sun RPC)
本地可以通过进程PID来唯一标识一个进程
网络进程间通信
网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。
socket中TCP的三次握手建立连接
1【客户端:我要连接】客户端调用connect时,触发了连接请求,向服务器发送了SYN J包,这时connect进入阻塞状态;
2 【服务端:收到请求,可以连接】服务器监听到连接请求,即收到SYN J包,调用accept函数接收请求向客户端发送SYN K ,ACK J+1,这时accept进入阻塞状态;
3 【客户端:收到回复,你说可以连接】客户端收到服务器的SYN K ,ACK J+1之后,这时connect返回,并对SYN K进行确认;
【服务端,知道对方知道,开始干活】服务器收到ACK K+1时,accept返回,至此三次握手完毕,连接建立。
socket中TCP的四次握手释放连接
1【主动端:我要关闭连接】某个应用进程首先调用close主动关闭连接,这时TCP发送一个FIN M;
2【被动端,进行收尾:我知道你要关闭连接,你等我结束】另一端接收到FIN M之后,执行被动关闭,对这个FIN进行确认。它的接收也作为文件结束符传递给应用进程,因为FIN的接收意味着应用进程在相应的连接上再也接收不到额外数据;
3 【被动端:我结束了,你可以关闭】一段时间之后,接收到文件结束符的应用进程调用close关闭它的socket。这导致它的TCP也发送一个FIN N;
4 【主动端:我关闭了】接收到这个FIN的源发送端TCP对它进行确认。
这样每个方向上都有一个FIN和ACK。
网络访问流程
应用层:
1.浏览器向DNS服务器发起DNS请求,进行域名解析,获得相应的IP地址
2.根据HTTP协议生成HTTP报文请求
在应用层将要发送的数据内容形成了应用层的报文data,发送到传输层
传输层:
3.TCP的三次握手
把处理的数据段发送到网络层
网络层:
4.IP寻址
5.ARP协议获取MAC地址
数据在网络层被打包,这样封装上了网络层的包头,包头内部含有源及目的的ip地址
数据链路层:
6.MAC寻址
7.服务器接受请求
8.服务端处理请求
9.服务端提供响应
10.四次挥手
11.浏览器解析和渲染页面,展示给用户
参考资料:
https://blog.csdn.net/zheng_guan/article/details/96427176
https://zhuanlan.zhihu.com/p/109826876
https://baijiahao.baidu.com/s?id=1707849542251291110&wfr=spider&for=pc
https://blog.csdn.net/ningmengshuxiawo/article/details/115413766
https://blog.csdn.net/weixin_48126962/article/details/117074843
https://blog.csdn.net/qq_42978418/article/details/108399390