深入理解通讯协议

Posted zenoliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解通讯协议相关的知识,希望对你有一定的参考价值。

网络模型

OSI模型(开放式系统互联),它是由国际标准化组织(ISO)提出的。

TCP/IP系列协议

TCP/IP(Transmission Control Protocol/Internet Protocol)不只是TCP/IP两个协议,而是有很多个协议组成,并且是在不同的层,是互联网的基础通信架构。

一个http请求浏览:应用层HTTP -> 传输层TCP -> 网络层IP(数据包)、 ICMP(确保源地址和目的地址之间是网络通)、IGMP(本地路由器和英特网的路由器联通) ->链路层

直接使用网络层协议的应用:ping命令,ICMP协议。

TCP的3次握手协议

第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

TCP的4次挥手协议

TCP中是怎么四次。

(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

TCP的通讯原理

 

“阻塞模式”:如果接收端,当然接收端缓冲区为空的时候,调用Socket的read方法的线程会阻塞,阻塞到有数据进入接收缓冲区;另外对于写数据到Socket中的线程来说,如果待发送的数据长度大于发送缓冲区空余长度,则会阻塞在write方法上,等待发送缓冲区的报文被发送到网络上,所以呢这个就是TCP的阻塞。

滑动窗口协议

发送方和接收方都会维护一个数据帧的序列,这个序列被称作窗口。发送方的窗口大小由接收方确认,目的是控制发送速度,以免接收方的缓存不够大导致溢出,同时控制流量也可以避免网络拥塞

HTTP协议

URI是请求的资源,URL是你请求的资源的地址也就是地址路径。

UDP协议

那为什么UDP不可靠,我们还使用它了,在这种在线视频中,丢失数据只会作为干扰出现,并且这种干扰是可以容忍的,就比如看视频的时候出现了画面与声音不同步的现象,大家还是会忍受的,同时UDP传输比较高效

实战

TCP的实战,因为TCP是要建立连接的,所以需要Socket和ServerSocket之间建立连接。

 

UDP呢,首先UDP是没有任何两台主机之间连接的概念,它只管发给谁就可以了,TCP可以使用流数据,而UDP不行,UDP在处理的时候以一个包的形式进行发送,要么就发送到了,要么就丢失。

 

 

ppt配图下载地址:文件名称:深入理解通讯协议.pptx

链接:https://pan.baidu.com/s/1098_HTL3ae0DTNbN0SkW8A
提取码:niua
复制这段内容后打开百度网盘手机App,操作更方便哦

 

链接失效了请联系作者

以上是关于深入理解通讯协议的主要内容,如果未能解决你的问题,请参考以下文章

深入TLS/SSL协议

深入理解http协议--必看

C/C++应用:深入理解Socket网络通信

漫谈Arduino内置的通讯协议

SPI通讯协议怎么理解呢。

理解即时通讯WebSocket的通信原理协议格式安全性