其他分享
首页 > 其他分享> > 马哥教育第八周

马哥教育第八周

作者:互联网

1、简述osi七层模型和TCP/IP五层模型

 [1]osi七层模型为:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层

第七层应用层:提供为应用软件而设的接口,针对特定应用的协议

第六层表示层:转换数据格式

 

 

第五层会话层:管理通信连接

 

 

第四层传输层:把传输表头增加到数据上,形成数据包,传输表头包含源和目标端口号,包的序号和确认号,6个标记位等

 

 

第三层网络层:路由选择,并将网络表头加至数据包,以形成报文,网络表头包含了目标地址和源地址等信息

 

 第二层数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能。将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。

 第一层物理层:在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网 络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等

[2]TCP/IP 5层模型

 

 将OSI7层模型的应用层,表示层,会话层划入了应用层,统一由应用层替代工作

2、总结描述TCP三次握手四次挥手

三次握手:

 

 首先服务器端的某服务处于监听状态(LISTEN),监听在某ip:某port

(1)客户端向服务器端的处于监听状态的ip:port发起连接请求,请求报文中TCP包头中标记位为SYN=1 seq代表客户端发出的包的编号(假设x=200),此时客户端进入SYN-SENT状态

(2)服务器端收到连接请求包后,回应确认包,响应包中TCP包头中标记位为SYN=1 、ACK=1 seq代表服务器端发出的包的编号(假设y=300), ack=201(希望客户端下一个包发送的包的编号为201) ,此时服务器端进入SYNC-RCVD状态

(3)客户端收到服务器端确认报文后,向服务器端发送真正的数据请求,标记位为ACK=1 seq=201 ack=301(希望服务器端的响应包编号)此时双方进入ESTAB-LISHED状态

 

四次挥手

 

 首先服务器端与客户端已经建立连接,都处于ESTABLISHED状态

假设,客户端主动请求断开连接

(1)客户端发送一个请求断开连接的数据包,包头TCP报文中标记位为FIN=1,seq为客户端发送的数据包的编号(假设u=400) 此时客户端状态为FIN-WAIT-1

(2)服务器端收到断开请求后,回应一个确认包,包头TCP报文中标记位为ACK=1,seq=v代表服务器端发送的数据包编号(假设v=500)  ack=401(表示希望客户端下个包的编号是401)此时服务器端进入CLOSE-WAIT

(3)服务器将先前客户端请求的数据,与断开请求发送给客户端,包头TCP报文中标记位为 FIN=1 ACK=1 seq=w(由于先前的v未收到客户端的响应报文,所以重新使用一个与编号v无关的编号w,假设为300) ack=401,服务器端进入LAST-ACK状态

(4)客户端收到服务器端的断开请求后,发送确认响应包,ACK=1 seq=401 ack=301 此时客户端进入TIME-WAIT 状态,在等待2MSL的时间后,会进入CLOSED状态

(2MSL时间为TCP报文段在网络中的最大生存时间, RFC 1122标准的建议值是2min),TIME-WAIT状态是是为了当最后一个ACK丢失时,可以再发送一次。因为服务端在等待超时后会再发送一个FIN给客户端,进而客户端知道ACK已丢失

服务器端开收到客户端回复的ACK=1的报文后,进入CLOSED状态

 

3、描述TCP和UDP区别

[1] UDP 是不需要和 TCP一样在发送数据前进行三次握手建立连接的,想发数据就可以开始发送了。并且也只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作。

因此,通信都不需要建立连接,想发就发,这样的情况肯定不可靠。

因此UDP包头,结构简单,头部开销小,只有八字节,相比 TCP 的至少二十字节要少得多,在传输数据报文时是很高效的。

网络环境时好时坏,但是 UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用 UDP 而不是 TCP。

总结:

 

UDP 头部包含了以下几个数据:

UDP包头:

 

 

标签:UDP,马哥,服务器端,ACK,报文,第八,TCP,教育,客户端
来源: https://www.cnblogs.com/zhaoyilei/p/14638879.html