其他分享
首页 > 其他分享> > 浅谈计算机网络

浅谈计算机网络

作者:互联网

浅谈计算机网络

文章目录

1、OSI七层模型、TCP/IP四层结构、五层协议结构?

OSI七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

TCP/IP四层结构:网络接口层、网际层、运输层、应用层

五层协议:物理层、数据链路层、网络层、运输层、应用层

对应的层作用对应的网络协议/硬件
物理层提供数据传输的硬件保证,网卡接口,传输介质中继器、集线器、网关、光纤
数据链路层数据交换,传输的数据转换为二进制形式网卡、网桥、交换机
网络层路由选择,网络互联IP、ICMP
传输层用于端到端的可靠数据传输TCP、UDP
会话层用于建立用户级的连接,选择适当的传输服务SQL、RPC
表示层用于对数据的压缩、加密JPEG、MPEG、ASII
应用层提供用户服务,具体功能由应用程序实现HTTP、SMTP、DNS

2、TCP和UDP的区别?基于TCP、UDP的协议有哪些?

TCP提供面向连接的、可靠的数据流传输,而UDP提供的是无连接的、不可靠的数据流传输。

TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

TCP的传输单位称为TCP报文段,UDP传输单位称为用户数据报。

TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了很多操作,但是其安全性却一般。

基于TCP的协议

基于UDP的协议:

TCP:当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,HTTP、HTTPS、FTP等传输文件的协议会使用到。

UDP:当强调传输性能而不是传输的完整性时,要求网络通通讯速度能尽量的快:如QQ语音,QQ视频等。

3、面向连接与面向非连接区别?

面向连接的服务,通信双方在进行通讯之前,要先在双方建立起一个完整的可以彼此沟通的通道,在通信过程中,整个连接的情况一直可以被实时地监控和管理。

非面向连接的服务,不需要预先建立一个联络两个通信节点的连接,需要通信的时候,发送节点就可以往网络上发送信息,让信息自主地在网络上去传,一般在传输地过程中不再加以监控。

4、TCP协议如何保证可靠传输?

滑动窗口实现流量控制: 流量控制是为了控制发送方发送速率,保证接收方来得及接收。

接受方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为0,则发送方不能发送数据。

5、TCP如何实现拥塞控制?

为了进行拥塞控制,TCP发送方要维持一个拥塞窗口(cwnd)的状态变量。拥塞控制窗口的大小取决于网络的拥塞程度,并且动态变化。发送方让自己的发送窗口取为拥塞窗口和接收窗口中较小的一个。

TCP的拥塞控制采用了四种算法,满开始、拥塞避免、快重传和快恢复

6、TCP的三次握手和四次挥手

为什么要进行三次握手?

  1. 第一次握手,为了让服务端认为客户端发送消息能力正常,服务端认为服务端接收能力正常。
  2. 第二次握手,为了让客户端认为服务器端接收和发送能力正常,客户端认为客户端发送和接收能力正常。
  3. 第三次握手,为了让服务器确认自己发送和接受能力正常,同时服务端也知道客户端发送和接收数据正常。

三次握手的具体过程

几个状态

  1. 开始客户端处于closed状态,服务端处于listen状态。
  2. 第一次握手:客户端给服务端发一个SYN报文,并指明客户端的初始化序列号ISN©,此时客户端处于SYN_SENT状态。
  3. 第二次握手:服务端收到客户端的SYN报文之后,会以自己的SYN报文作为应答,并且指明自己的ISN,同时会发送客户端ISN+1作为ACK的值,表示自己已经收到客户端的ISN,此时服务器处于SYN_RCVD的状态。
  4. 第三次握手:客户端收到SYN报文之后,会发送一个ACK报文,当然,也是一样把服务器的ISN + 1作为ACK的值,表示已经收到服务端的SYN报文,此时客户端处于established状态。
  5. 服务器收到ACK报文之后,也处于established状态,此时,双方以建立连接。

image-20220320161339199

四次挥手的具体过程

  1. 双方都处于establised状态,客户端发起关闭请求,
  2. 第一次挥手:客户端发送一个FIN报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。
  3. 第二次挥手:服务器收到FIN之后,会发送ACK报文,且客户端的序列号值+1作为ACK报文的序列号值,表明已经收到客户端的报文了,此时服务端处于CLOSE_WAIT状态。
  4. 第三次挥手:如果服务器也想断开连接了,和客户端的第一次挥手一样,发出FIN报文,且指定一个序列号。此时服务端处于LAST_ACK的状态。
  5. 第四次挥手:客户端收到FIN之后,发送一个ACK报文作为应答,且把服务端的序列号值 + 1作为自己ACK的序列号值,此时客户端处于TIME_WAIT状态。需要过一阵子以确保服务端收到自己的ACK报文之后才会CLOSE状态。
  6. 服务端收到ACK报文之后,就处于关闭连接了,处于CLOSED状态。

image-20220320161312516

7、如果已经建立连接,但是客户端突然出现故障了怎么办?

TCP设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户请求后就会重新复位这个计数器,时间通常是设置为2小时,若两个小时还没收到客户端的任何数据,服务器就会发送一个探测报文段,,以后每隔75秒发送一次。若一连发送10个探测报文仍然没有反应,服务器就认为客户端出故障了,接着就关闭连接。

标签:发送,浅谈,报文,TCP,计算机网络,拥塞,服务端,客户端
来源: https://blog.csdn.net/qq_50754735/article/details/123616112