手一直脱皮是什么原因| 尿毒症是什么引起的| 侍郎是什么官| 电测听是什么| 今年为什么闰六月| 青稞面是什么| 乙醇是什么东西| 处女膜破了什么症状| 乙醚是什么| 胸闷气短看什么科| 六味地黄丸起什么作用| 胃热是什么原因引起的| 长期开灯睡觉有什么危害| 一阴一阳是什么数字| 香槟是什么酒| 手五行属什么| 脸水肿是什么原因| 胸疼是什么原因引起的| 做什么能快速赚钱| 湘字五行属什么的| 什么是拘役| 豁口是什么意思| 幽门螺旋杆菌做什么检查| 插管意味着什么| 区人大代表是什么级别| 4月18日什么星座| 看淡一切对什么都没兴趣| 疖肿吃什么药| 低血压吃什么可以补| 咽喉肿痛吃什么药好| 女人性冷淡是什么原因| 出佛身血是什么意思| 什么是三伏天| 腰椎间盘突吃什么药| 吃奇亚籽有什么好处| 生化全项包括什么| 槐花什么时候开花| 新生儿黄疸吃什么药| ochirly是什么牌子| 血清铁蛋白低说明什么| 上午9点是什么时辰| 想做肠镜挂什么科| 包茎是什么| 吃什么瘦肚子脂肪最快| 妊娠期是指什么时候| 6.5是什么星座| 怀孕吃叶酸有什么用| 四月初八是什么日子| 晚上咳嗽是什么原因| 农历六月十一是什么星座| 压差小是什么原因引起的| 牙龈经常发炎是什么原因| 铅是什么东西| 撕漫男什么意思| 云南小黄姜和普通姜有什么区别| 天生一对成伴侣是什么生肖| 西瓜有什么营养和功效| 知天命是什么年纪| 什么是粉尘螨过敏| 黑咖啡为什么能减肥| 夏天适合吃什么食物| 细菌性阴道炎吃什么药好| 威士忌属于什么酒| 巴基斯坦是什么语言| 虎父无犬女是什么意思| 为什么不建议吃大豆油| 无量寿经讲的是什么| 智齿什么时候长| 增生期子宫内膜是什么意思| 兰桂齐芳是什么意思| 零申报是什么意思| 非诚勿扰是什么意思| 什么是中产阶级| 晚上起夜尿多吃什么药| 腰间盘突出是什么症状| 来字五行属什么| 右手掌心有痣代表什么| 庄周梦蝶是什么意思| 包的部首是什么| 蝉为什么会叫| 脍炙人口什么意思| 女人排卵期有什么反应| 屁股胀痛什么原因| 荪是什么意思| 小腿怕冷是什么原因| ct与核磁共振有什么区别| 长沙有什么特产| 脚肿吃什么消肿最快| 好嘞是什么意思| 11月9日什么星座| 洋葱有什么好处| 淋菌性尿道炎吃什么药| 男人少精弱精吃什么补最好| 财神位放什么最旺财| 什么破壁机好用| 八一建军节什么生肖| 窈窕淑女君子好逑是什么意思| 富贵包去医院挂什么科| 玻璃心是什么意思| 久违什么意思| 喝什么利尿| 女人什么时候最想要| 什么食物含锌| 查生育能力挂什么科| 利多卡因是什么药| 手脱皮用什么药好得快| 草代表什么生肖| 04年属猴的是什么命| 戒手淫有什么好处| 丙酮是什么| rt是什么| 桂林是什么地貌| 饱的偏旁叫什么| 息怒是什么意思| 烂嘴唇是什么原因引起的| 小姑娘为什么会得多囊卵巢| 小猫吃什么东西| 阴囊瘙痒是什么原因| 夭寿是什么意思| 1885年属什么生肖| 辰砂和朱砂有什么区别| 什么的琴声| 医学上ca是什么意思| 钧字五行属什么| 做梦梦见火是什么意思| 特警力量第二部叫什么| 女孩为什么难得午时贵| 讲述是什么意思| 胃酸吃什么能马上缓解| 什么牌子的洗衣机最好| 又拉肚子又呕吐是什么原因| 小心眼什么意思| 甲状腺双叶回声欠均匀是什么意思| 尿路感染要吃什么药| 经常吃紧急避孕药有什么危害| 怀孕甲减对孩子有什么影响| 学信网上的报告编号是什么| 浅表性胃炎吃什么药好| 为什么会脱发| 1995年属什么生肖| 不值一提是什么意思| kcl是什么药| 政治面貌填什么| 奥美拉唑是什么药| 尿道口有烧灼感为什么| 月经期间吃什么好| aosc是什么病| 啪啪啪是什么意思| 清创手术是什么意思| 手臂有痣代表什么| 梦见牙齿掉光了是什么征兆| absolutvodka什么酒| 晚上吃什么不胖| 网监是干什么的| 为什么头疼| 耳前瘘管有什么危害| 女性睾酮低意味着什么| 冬眠灵是什么药| 一倍是什么意思| 发烧去医院挂什么科| 目赤肿痛吃什么药最好| 指甲长的快是什么原因| 阴人是什么意思| 舌尖发麻是什么问题| 胃得宁又叫什么名字| anode是什么意思| 乌托邦是什么意思| 兔子可以吃什么| 细菌属于什么生物| xg是什么意思| 什么是食品安全| 狗狗哭了代表什么预兆| 孕妇现在吃什么水果好| 36是什么意思| 血燕是什么| 智齿拔了有什么影响| 牛后腿肉适合做什么| 无料案内所是什么意思| 7月14什么星座| 后背长痘痘是什么原因引起的| hpv59阳性是什么意思| 匆匆那年是什么意思| 上呼吸道感染吃什么消炎药| 半月板变性是什么意思| ideal是什么意思| 石斛念什么| 吃什么有助于消化| 孕妇吃什么菜好| 舂米是什么意思| 1971年是什么命| 小孩手足口病吃什么食物好| 鸡后面是什么生肖| 肺部微结节是什么意思| 吃饺子是什么节日| 黄油是什么意思| 鼻炎吃什么药最好| 勖是什么意思| 芒硝有什么作用| 洗耳恭听什么意思| 舌头有红点是什么原因| 什么方法不掉头发| 周易和易经有什么区别| 插管是什么意思| 尾骨疼痛挂什么科| yg是什么意思| 手背有痣代表什么意思| 什么口罩| 安欣是什么电视剧| 吃什么药死的快| 4月23日是什么星座| 制冰机不制冰是什么原因| 蒹葭苍苍是什么意思| 发福是什么意思| 儿童发育过早应该挂什么科| 尿的酸碱度能说明什么| 钦字五行属什么| 怀孕10多天有什么症状| 梦见狗是什么预兆| 宜破屋是什么意思| 莆田医院是什么意思| 1月1日是什么星座| 西安有什么好吃的| 佛手瓜什么时候结果| 小猫吃什么| 玉屏风颗粒主治什么| 湿气重吃什么蔬菜| kailas是什么牌子| 阴历六月十八是什么日子| 前白蛋白是什么意思| 非均匀性脂肪肝是什么意思| 9月20日什么星座| 内分泌科属于什么科| 脚底板发热是什么原因| 射频消融术是什么意思| 口腔溃疡什么时候能好| 过氧化氢弱阳性什么意思| 司南是什么| 杜甫的诗被称为什么| 阴道口痒用什么药| 吃饭后胃疼是什么原因| 阳历是什么| 湿疹挂什么科| 低压偏高什么原因| 牛肉饺子馅配什么蔬菜好吃| 扁豆长什么样子图片| 1974年属虎的是什么命| 窒息是什么意思| 倪妮和倪萍什么关系| 肚子怕冷是什么原因该怎么办| Fine什么意思中文| wv是什么意思| 小孩支气管炎吃什么药| 曹洪是曹操的什么人| 检查肺结节挂什么科| 一个提手一个京念什么| 5月19日什么星座| 怀疑是什么意思| 为什么会得糖尿病| 男性阴囊瘙痒用什么药膏| 真菌感染有什么症状| 牡丹花什么颜色| 什么泉水| 女人梦见下雪是什么征兆| 欲盖弥彰是什么意思| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 综合技术 ? 基础知识 ? 一文读懂TCP/IP!

共2条 1/1 1 跳转至

一文读懂TCP/IP!

高工
2025-08-03 15:11:40     打赏
百度 一是把协商民主贯穿政治协商、民主监督、参政议政全过程。

1716966496055.png

一、TCP/IP模型

TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层。下图表示TCP/IP模型与OSI模型各层的对照关系。

image.png

TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用层,这里面有http,ftp 等等我们熟悉的协议。而第二层则是传输层,著名的TCP和UDP协议就在这个层次。第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标。第四层是数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。


image.png     


上图清楚地表示了TCP/IP协议中每个层的作用,而TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程。入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地。出栈的过程,数据接收方每层不断地拆除首部与尾部,得到最终传输的数据。


image.png

上图以HTTP协议为例,具体说明。

二、数据链路层

物理层负责0、1比特流与物理设备电压高低、光的闪灭之间的互换。数据链路层负责将0、1序列划分为数据帧从一个节点传输到临近的另一个节点,这些节点是通过MAC来唯一标识的(MAC,物理地址,一个主机会有一个MAC地址)。


image.png

  • 封装成帧: 把网络层数据报加头和尾,封装成帧,帧头中包括源MAC地址和目的MAC地址。

  • 透明传输:零比特填充、转义字符。

  • 可靠传输: 在出错率很低的链路上很少用,但是无线链路WLAN会保证可靠传输。

  • 差错检测(CRC):接收者检测错误,如果发现差错,丢弃该帧。

三、网络层1、IP协议

IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGMP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制,这被认为是上层协议:TCP或UDP要做的事情。

1.1 IP地址

在数据链路层中我们一般通过MAC地址来识别不同的节点,而在IP层我们也要有一个类似的地址标识,这就是IP地址。32位IP地址分为网络位和地址位,这样做可以减少路由器中路由表记录的数目,有了网络地址,就可以限定拥有相同网络地址的终端都在同一个范围内,那么路由表只需要维护一条这个网络地址的方向,就可以找到相应的这些终端了。A类IP地址: 0.0.0.0~127.0.0.0
B类IP地址:128.0.0.1~191.255.0.0
C类IP地址:192.168.0.0~239.255.255.0

1.2 IP协议头

image.png

这里只介绍:八位的TTL字段。这个字段规定该数据包在穿过多少个路由之后才会被抛弃。某个IP数据包每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃。这个字段的最大值也就是255,也就是说一个协议包也就在路由器里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一样,一般是32或者是64。

2、ARP及RARP协议

ARP 是根据IP地址获取MAC地址的一种协议。ARP(地址解析)协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址对应表缓存)。如果查询的IP-MAC值对不存在,那么主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的主机。而广播主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方)。发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作。RARP协议的工作与此相反,不做赘述。

3、ICMP协议

IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。ICMP不是高层协议,而是IP层的协议。

当传送IP数据包发生错误。比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会,这 也就是为什么说建立在IP层以上的协议是可能做到安全的原因。

四、ping

ping可以说是ICMP的最著名的应用,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。

例如:当我们某一个网站上不去的时候。通常会ping一下这个网站。ping会回显出一些有用的信息。一般的信息如下:

image.png

ping这个单词源自声纳定位,而这个程序的作用也确实如此,它利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0的ICMP发请求,受到请求的主机则用类型码为8的ICMP回应。

五、Traceroute

Traceroute是用来侦测主机到目的主机之间所经路由情况的重要工具,也是最便利的工具。

Traceroute的原理是非常非常的有意思,它收到到目的主机的IP后,首先给目的主机发送一个TTL=1的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的ICMP数据报给主机。主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据 报。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器IP。

image.png

六、TCP/UDP

TCP/UDP都是是传输层协议,但是两者具有不同的特性,同时也具有不同的应用场景,下面以图表的形式对比分析。

image.png

面向报文

面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。

面向字节流

面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。关于拥塞控制,流量控制,是TCP的重点,后面讲解。TCP和UDP协议的一些应用

image.png

什么时候应该使用TCP?

当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。

什么时候应该使用UDP?

当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。

七、DNS

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

八、TCP连接的建立与终止1、三次握手

TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。

image.png

第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。

为什么要三次握手?

为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。具体例子:“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”

2、四次挥手

当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那对于TCP的断开连接,这里就有了神秘的“四次分手”。

1716966628526.png

第一次分手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;

第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求;
第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;

第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。

为什么要四次分手?

TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次TCP连接。

为什么要等待2MSL?

MSL:报文段最大生存时间,它是任何报文段被丢弃前在网络内的最长时间。原因有二:

  • 保证TCP协议的全双工连接能够可靠关闭

  • 保证这次连接的重复数据段从网络中消失

第一点:如果主机1直接CLOSED了,那么由于IP协议的不可靠性或者是其它网络原因,导致主机2没有收到主机1最后回复的ACK。那么主机2就会在超时之后继续发送FIN,此时由于主机1已经CLOSED了,就找不到与重发的FIN对应的连接。所以,主机1不是直接进入CLOSED,而是要保持TIME_WAIT,当再次收到FIN的时候,能够保证对方收到ACK,最后正确的关闭连接。

第二点:如果主机1直接CLOSED,然后又再向主机2发起一个新连接,我们不能保证这个新连接与刚关闭的连接的端口号是不同的。也就是说有可能新连接和老连接的端口号是相同的。一般来说不会发生什么问题,但是还是有特殊情况出现:假设新连接和已经关闭的老连接端口号是一样的,如果前一次连接的某些数据仍然滞留在网络中,这些延迟数据在建立新连接之后才到达主机2,由于新连接和老连接的端口号是一样的,TCP协议就认为那个延迟的数据是属于新连接的,这样就和真正的新连接的数据包发生混淆了。所以TCP连接还要在TIME_WAIT状态等待2倍MSL,这样可以保证本次连接的所有数据都从网络中消失。

九、TCP流量控制

如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。

利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。

设A向B发送数据。在连接建立时,B告诉了A:“我的接收窗口是 rwnd = 400 ”(这里的 rwnd 表示 receiver window) 。因此,发送方的发送窗口不能超过接收方给出的接收窗口的数值。请注意,TCP的窗口单位是字节,不是报文段。假设每一个报文段为100字节长,而数据报文段序号的初始值设为1。大写ACK表示首部中的确认位ACK,小写ack表示确认字段的值ack。

image.png

从图中可以看出,B进行了三次流量控制。第一次把窗口减少到 rwnd = 300 ,第二次又减到了 rwnd = 100 ,最后减到 rwnd = 0 ,即不允许发送方再发送数据了。这种使发送方暂停发送的状态将持续到主机B重新发出一个新的窗口值为止。B向A发送的三个报文段都设置了 ACK = 1 ,只有在ACK=1时确认号字段才有意义。

TCP为每一个连接设有一个持续计时器(persistence timer)。只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口控测报文段(携1字节的数据),那么收到这个报文段的一方就重新设置持续计时器。

十、TCP拥塞控制

发送方维持一个拥塞窗口 cwnd ( congestion window )的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。

发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。

慢开始算法:

当主机开始发送数据时,如果立即所大量数据字节注入到网络,那么就有可能引起网络拥塞,因为现在并不清楚网络的负荷情况。因此,较好的方法是 先探测一下,即由小到大逐渐增****送窗口,也就是说,由小到大逐渐增大拥塞窗口数值。

通常在刚刚开始发送报文段时,先把拥塞窗口 cwnd 设置为一个最大报文段MSS的数值。而在每收到一个对新的报文段的确认后,把拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增****送方的拥塞窗口 cwnd ,可以使分组注入到网络的速率更加合理。

image.png

每经过一个传输轮次,拥塞窗口 cwnd 就加倍。一个传输轮次所经历的时间其实就是往返时间RTT。不过“传输轮次”更加强调:把拥塞窗口cwnd所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。

另,慢开始的“慢”并不是指cwnd的增长速率慢,而是指在TCP开始发送报文段时先设置cwnd=1,使得发送方在开始时只发送一个报文段(目的是试探一下网络的拥塞情况),然后再逐渐增大cwnd。

为了防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh状态变量。慢开始门限ssthresh的用法如下:

  • 当 cwnd < ssthresh 时,使用上述的慢开始算法。

  • 当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。

  • 当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞控制避免算法。拥塞避免

拥塞避免

让拥塞窗口cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍。这样拥塞窗口cwnd按线性规律缓慢增长,比慢开始算法的拥塞窗口增长速率缓慢得多。

image.png

无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有收到确认),就要把慢开始门限ssthresh设置为出现拥塞时的发送 方窗口值的一半(但不能小于2)。然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。

这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生 拥塞的路由器有足够时间把队列中积压的分组处理完毕。

如下图,用具体数值说明了上述拥塞控制的过程。现在发送窗口的大小和拥塞窗口一样大。

image.png

2、快重传和快恢复快重传

快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时才进行捎带确认。

接收方收到了M1和M2后都分别发出了确认。现在假定接收方没有收到M3但接着收到了M4。

显然,接收方不能确认M4,因为M4是收到的失序报文段。根据 可靠传输原理,接收方可以什么都不做,也可以在适当时机发送一次对M2的确认。

但按照快重传算法的规定,接收方应及时发送对M2的重复确认,这样做可以让 发送方及早知道报文段M3没有到达接收方。发送方接着发送了M5和M6。接收方收到这两个报文后,也还要再次发出对M2的重复确认。这样,发送方共收到了 接收方的四个对M2的确认,其中后三个都是重复确认。

快重传算法还规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段M3,而不必 继续等待M3设置的重传计时器到期。

由于发送方尽早重传未被确认的报文段,因此采用快重传后可以使整个网络吞吐量提高约20%。

快恢复

与快重传配合使用的还有快恢复算法,其过程有以下两个要点:当发送方连续收到三个重复确认,就执行“乘法减小”算法,把慢开始门限ssthresh减半。与慢开始不同之处是现在不执行慢开始算法(即拥塞窗口cwnd现在不设置为1),而是把cwnd值设置为 慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。





关键词: 网络     传输     TCP     IP    

院士
2025-08-03 16:49:14     打赏
2楼

谢谢分享,学习并收藏了。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
什么是力量训练 肚脐眼下面是什么部位 小便次数多吃什么药 长春有什么好吃的 贴图是什么意思
什么是躯体化症状表现 什么的雾 胎次是什么意思 低密度脂蛋白是什么 玉米有什么营养
蚊子的幼虫叫什么 10月1是什么星座 脾胃虚寒能吃什么水果 双氧水又叫什么名字 什么是医美
世界上最毒的蜘蛛叫什么 反应蛋白高是什么原因 在什么什么后面 xxoo是什么 妈妈的姐妹叫什么
脸上为什么会长斑hcv8jop0ns2r.cn 低头头晕是什么原因hcv8jop2ns9r.cn 幽门螺杆菌吃什么药最好hcv7jop6ns1r.cn cst是什么意思hcv8jop7ns1r.cn 华堂是什么意思hcv9jop2ns9r.cn
哈库呐玛塔塔什么意思hcv7jop9ns6r.cn 是什么符号hcv8jop4ns5r.cn 虾虎鱼吃什么hcv9jop8ns0r.cn 原则性问题是什么意思hcv8jop4ns8r.cn 世事无常是什么意思xinjiangjialails.com
天眼是什么意思hcv9jop6ns2r.cn 叩首是什么意思hlguo.com 白带是什么样子hcv9jop6ns3r.cn 腺肌症是什么症状hcv9jop0ns4r.cn 秋水仙碱是什么hcv9jop0ns9r.cn
什么力竭hcv8jop6ns3r.cn 阴茎勃起不硬吃什么hcv8jop3ns7r.cn 梦到狐狸是什么意思hcv8jop3ns4r.cn offer什么意思hcv9jop4ns3r.cn 笋壳鱼是什么鱼hcv7jop9ns4r.cn
百度