9.3.2.2网络原理(传输层TCP)

TCP全部细节参考RFC标准文档

一.TCP特点:

有连接,可靠传输,面向字节流,全双工.

二.TCP数据报:

1.端口号是传输层的重要概念.

2.TCP的报头是变长的(UDP是固定的8字节),大小存在4位首部长度中,用4个bit位(0~15)表示长度单位是4字节.(TCP报头最大长度是60字节,前面20字节是固定的,"选项"部分可有可无,可大可小)

三.TCP核心特性:

1.保证可靠性的机制:

a)确认应答(核心)

1)对每个字节进行标号,只要对第一个字节编号,再结合报文长度,此时每个字节的编号就确定了.

2)确认序号表示该序号之前的数据全部收到了.

 

3)ACK:如果ACK为0,说明是普通报文,此时确认序号无效,如果ACK为1,此时确认序号都有效,但是序号和确认序号无关(序号是本次数据的编号,确认序号和接收的数据有关).

4)TCP载荷长度在IP层可以得知,TCP载荷 = IP载荷 - TCP报头. 

b)超时重传:相当于针对确认应答做出的重要补充.

1)收到了数据之后,要对数据进行去重(按照TCP的序号作为依据).

2)TCP在内核中,会给每个socket对象安排一个内存空间,相当于一个队列,称为接收缓冲区,收到的数据会不会放在缓冲区中,按照序号进行排列(队头数据之前的序号一定是读过了,如果重传,会自动去除,如果发生后发先置的情况,则会在队列中根据序号排好队,如果最先发的数据迟迟不到会阻塞等待).

3)不管是发送的消息本身丢了,还是应答报文丢了,都会重传.

4)如果多次重传失败,会重置TCP连接.

RST为1表示复位报文. 

c)三次挥手和四次握手(连接管理)

1)三次握手:

2)三次握手的目的:验证网络是否通畅,以及每个主机的发送能力和接收能力是否正常,进行消息协商,使客户端和服务器以相同的参数进行数据传输.

3)三次握手为什么是三次?

恰好三次,能够验证好双方的发送和接收功能均正常,并且把这样的信息同步给双方,所以两次是不可以的,虽然两次握手也可以验证完成通信能力的正确性,但是服务器这边还不知道这样验证通过的信息,四次是可以的,但是没有必要,中间两次可以合并,如果非要拆开会降低效率.

4)四次挥手:

FIN:结束报文段. 

  

5)四字挥手,为什么是四次,三次行不行?

有的时候三次可以,有的时候必须四次,中间两次不一定能合并.FIN是由程序代码触发控制的,调用socket.close()方法,或者进程结束,才会触发FIN, ACK是系统内核控制的,收到FIN之后立马会返回ACK.


6)四次挥手时数据丢失:前三次数据丢失会重传,但是会发生最后一次ACK丢失的情况,所以客户端在发生最后一次ACK之后不能之间释放资源,而是应该等待2个MSL时间(1个MSL时间是网络通信所需的最大时间,一来一回一共2倍).

d)流量控制:根据服务器的处理能力,控制客户端的发送速度(窗口大小)

1)使用服务器接收缓冲区的剩余大小来衡量服务器的处理能力.

2)如果服务器发送的ACK中表示接收缓冲区空余大小为0,客户端会暂停发送数据(发也是丢包),一段时间过后,客户端会发送窗口探测包(不携带任何具体数据),为了触发服务器的ACK,根据服务器返回的ACK考虑下一步.

e)拥塞控制:整体的网络传输能力

1)机制:使用实验的方法,动态调整窗口大小.使用一个较小的窗口传输,如果传输通畅,就调大窗口;使用较大的窗口传输,如果传输拥塞(丢包),就调小窗口.

2)过程:

慢启动:刚开始使用非常小的窗口试水.

指数增长:在传输通畅的情况下,拥塞窗口就会指数增长.

线性增长:当指数增长到一定阈值之后,就会触发线性增长.

回归小窗口:在窗口增长的过程中,如果出现丢包,就认为网络拥塞,此时会回归到最初的小窗口.

重复上述过程,但是会调整阈值.

注意: 实际发送窗口 = min(流量控制窗口, 拥塞窗口)

2.提高传输效率:

a)滑动窗口:一次性发一组数据.

1)如果一个一个发,大部分时间浪费在等待ACK什么,使用滑动窗口,一次性发送多个数据,使用一份等待时间,等待多个ACK.

2)窗口的含义:一次发送不需要等待ACK的消息个数.

3)如下图,当2001到达客户端之后,客户端就会立刻发送下一个数据,客户端始终保持等待的ACK的个数不变.

4)丢包处理:

如果是ACK丢了,不用做任何处理,比如,如果确认序号2001丢了,但是下一次会返回确认序号3001,表示3001前的数据都收到了(包括2001).

快速重传:如果普通数据丢了,必须要重传,比如,如果数据2001~3000丢了,客户端继续发送数据,服务器会一直发送确认序号2001,这时客户端就知道了数据2001~3000丢了.收到多次同样的确认序号之后,客户端就会重传.

注意:这里的快速重传和上面的超时重传并不冲突,在数据量少的情况下,TCP未必会使用滑动窗口的机制,丢包情况下会使用超时重传机制,数据量的时,TCP使用滑动窗口机制,丢包情况下使用快速重传机制.

b)延迟应答:

机制:服务器返回ACK时,拖延一点时间,使服务器先消费掉一点数据,这样接收缓冲区就更大了,客户端的窗口也更大了.

c)捎带应答:

机制: 响应和ACK合二为一.

实例:四次挥手可以合并成三次.

3.粘包问题:

a)粘包问题就是接收方在缓冲器中取数据,无法区分一条数据的边界.

b)解决问题需要站在应用层的角度.

1)应用层协议中,引入分隔符,比如\n.

2)应用层协议中,引入包长度

4.TCP异常情况处理:

a)进程崩溃:

进程没了 => PCB没了 => 文件描述符释放(相当于调用socket,close()方法) => 发送FIN,触发四次握手.

和正常情况没区别.

b)主机正常关机:

正常关机会干掉所有进程,和进程崩溃处理一样.

c)主机掉电:

1.接收方掉电:发送方收不到ACK,发送方会触发超时重传,多次失败后,会发送复位报文(RST字段

为1)来重置连接,失败后就释放连接.

2.发送方掉电:接收方会发送心跳包(不携带业务数据)来触发ACK,目的是确认发送方是否工作和网络是否通畅.

d)网线断开:

参考c)主机掉电.

5.总结:

### 回答1: "nxos.9.3.8.bin"是指Cisco Nexus交换机操作系统的版本号为9.3.8的二进制文件。Cisco Nexus交换机是用于数据中心网络的高性能交换设备,而nxos.9.3.8.bin则是该交换机所运行的操作系统的一部分。 nxos.9.3.8.bin具有以下特点和功能: 1. 版本号:9.3.8指的是操作系统的主要版本、次要版本和修订版本。这表明该操作系统是第9个主要版本的第3个次要版本,其中包含了8次修订,所以它是该操作系统的一个较新的版本。 2. 功能增强:每个操作系统版本都会进行一些功能增强和错误修复。所以,nxos.9.3.8.bin很可能包含了一些以前版本中存在的问题的修复和新功能的添加。这将有助于提高交换机的性能和稳定性。 3. 安全性:更新操作系统版本是维护网络安全的重要措施之一。nxos.9.3.8.bin可能包含了一些安全漏洞的修复,以增强交换机在网络中的保护能力。 4. 兼容性:操作系统版本必须与硬件兼容才能正常运行。因此,nxos.9.3.8.bin可能只适用于特定的硬件平台和型号。在升级操作系统之前,必须确认它的兼容性,以确保良好的性能和稳定性。 总之,nxos.9.3.8.bin是Cisco Nexus交换机操作系统的一个较新的版本,通过更新操作系统,可以提高交换机的性能,修复漏洞,增强网络安全,并确保与兼容硬件平台的正常运行。 ### 回答2: nxos.9.3.8.bin是指Cisco Nexus操作系统的版本号为9.3.8的二进制文件。 Cisco Nexus操作系统(NX-OS)是一种用于Cisco Nexus系列交换机的专业网络操作系统。它提供了高性能、高可靠性和高安全性的网络解决方案。 nxos.9.3.8.bin作为二进制文件,是指包含了操作系统可执行代码的二进制文件。它是操作系统的核心部分,负责管理和控制交换机的各种功能。 将nxos.9.3.8.bin安装到交换机上,可以使交换机运行在该特定版本的操作系统之上。这个版本可能包含了一些新的功能、修复了一些已知的问题,或者提供了一些性能优化。 通过更新到nxos.9.3.8.bin,用户可以获得更好的性能、更稳定的系统以及更好的网络安全。此外,也可能会提供一些新的功能,以满足不断变化的网络需求。 更新操作系统需要谨慎操作,因为操作系统是交换机的核心组件,错误的安装或配置可能导致交换机无法正常工作。在更新操作系统之前,建议先仔细查看更新文档,了解新版本的特性和要求,同时备份重要的配置文件以便恢复。 总之,nxos.9.3.8.bin是Cisco Nexus交换机操作系统版本9.3.8的二进制文件,可以为交换机提供更好的性能、稳定性和安全性,并可能包含一些新的功能。更新操作系统时需谨慎操作,以确保交换机的正常运行。 ### 回答3: nxos.9.3.8.bin是思科公司推出的一款网络操作系统(NX-OS)的固件版本。NX-OS是专门为思科数据中心交换机而设计的操作系统,具有高性能、高可用性和可扩展性等特点。 nxos.9.3.8.bin版本是该操作系统的一个特定版本,其中的“9.3.8”表示该固件版本的主要版本号、次要版本号和修订版本号。这个版本号的每一部分都具有特定的含义。主要版本号通常表示重要的新功能、架构变化或较大的更新。次要版本号表示中等规模的新功能、改进和修复。修订版本号通常表示小规模的维护更新和错误修复。 使用nxos.9.3.8.bin版本的固件可以带来一些好处。首先,nxos.9.3.8.bin版本可能包含了一些新的功能和改进,可以提高网络设备的性能和功能。其次,该版本可能修复了一些与之前版本相关的错误和安全漏洞,提高了系统的稳定性和安全性。此外,使用相同版本的固件可以帮助网络管理员更好地管理和维护网络设备,提高网络的可管理性。 然而,需要注意的是,选择使用哪个固件版本取决于具体的需求和网络环境。在更新固件之前,一定要了解新版本的功能和变化,并进行适当的测试,以确保其兼容性和稳定性。 总之,nxos.9.3.8.bin是思科公司推出的一款网络操作系统的特定固件版本,它可以提供更强大和稳定的网络功能,并修复之前版本的错误和漏洞。适当选择和更新固件版本可以提高网络设备的性能、安全性和可管理性。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数九天有一个秘密

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值