深入理解通信协议-(1)

网络模型

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

TCP/IP系列协议

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

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

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

TCP3次握手协议

第一次握手: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之间可以开始传输数据了。

TCP4次挥手协议

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是要建立连接的,所以需要SocketServerSocket之间建立连接。

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-03-08 15:33  Mogle  阅读(114)  评论(0编辑  收藏