总结一下网络方面的知识点(二)

这一篇文章主要总结传输层相关的知识。

通过上一篇文章我们知道了,网络层和数据链路层做到了把数据传递到目的主机,但是每一个主机上都运行着多个进程,我们需要把数据传递到目的主机的目的进程上,这个时候就需要用到端口号来确定目标进程,通过传输层协议来完成这一目标。

1.UDP协议

UDP无连接,不可靠,没有拥塞控制能传多快就传多快。

UDP因为自身的特点精彩用于以下方面:

包总量较少的通信(DNS、SNMP)

视频、音频等多媒体通信(即时通信)

限定于LAN等特定网络中的应用通信

广播通信(广播、多播)

2.UDP报文

ump报文结构

3.TCP协议

TCP面向连接,提供可靠数据传输,丢包重传,拥塞控制。

4.TCP报文

tcp报文结构

5.三次握手

tcp

三次握手的过程:

synbit-> synbit+ackbit->ackbit

acknum可以理解为下一个想要的seqnum。

⚠️:丢包处理

在数据传输的过程中很有可能发生丢包,丢包只有两种可能一种是synbit包丢了,一种是ack包丢了。

如果客户端传给服务器的synbit包在传输过程中丢了,那么客户端就等不到ack信号,等待时间超过重传超时时间(RTO)以后,就会重新向服务器发送synbit。

如果客户端给服务器发送的synbit包正确到达了,但是回传的ack信号在传输过程中丢失了,客户端就迟迟没有收到ack信号,客户端认为自己发送的包没有被服务器接收到,等待时间超过重传超时时间之后就重新向服务器发送synbit包,而服务器其实已经收到这个包了,他会把这个包丢弃同时回传一个ack信号。

为什么不是两次握手?

三次握手才建立连接就是说客户端再次给服务器发送ack信号的时候连接建立,而两次握手就是说客户端第一次给服务器发送synbit服务器收到了就建立了连接。这样做很有可能造成的问题就是客户端发送给服务器的synbit在网络传输的过程中发生了时延,客户端等了一段时间没有等到服务器发来了synbit+ack,就主动关闭了连接,而过了一会儿这个信号发给服务器了,服务器建立了连接,然而这个时候客户端已经不在了,只有服务器一端的连接是开启的,这个连接是没有意义的,浪费了服务器资源。

6.四次挥手

四次挥手

三次挥手的时候只能是客户端主动向服务器发起建立连接的请求。

因为tcp连接是双向的,任何一方都可以发起关闭连接的请求,当一方的数据发送完毕以后想对方发一个fin信号,代表这一方向上不再发送数据。

比如图中,client向server发送了finbit,代表client到server的数据传输终止。

server向client发送一个ack,但是此时并没有终止连接,仍然可以继续从server向client发送数据,直到server数据传输完毕,才向client发送一个finbit信号。

client接收到服务器发送的finbit,给服务器发送确认信号,连接终止。

为什么是四次挥手?

服务器第一次收到来自客户端的fin信号的时候,可能还没有传输完所有的数据,只是先给客户端发送一个确认报文,告诉客户端自己收到了信号。然后继续把所有的数据发完,发完以后再发送fin信号关闭这一方向上的数据传输。

7.窗口

首先我们要知道为什么会有窗口这个概念,在传递数据的时候如果每次传数据都要等到ack信号回传过来再去传递新的数据速度太慢了,窗口就使得我们可以连续发送多个数据而不需要等到ack信号回传过来再传,而这个窗口就是无需等待确认应答就可以继续发送数据包的最大数量。

⚠️:窗口的滑动,窗口在数据包传输的过程中是滑动的,而且这个滑动是cumulative的,比如说我们收到acknum=100,那也就是说接收方已经收到了seqnum = 100之前的包,那这个时候窗口就可以滑动到seqnum = 100的位置。

8.快速重传

kai


快速重传就是发送端在接收到一个ack信号以后又连续收到了三个相同的ack信号(一共是4个ack信号),这就意味着之前传递的信号失败了,这个时候tcp不会等到重传超时时间就会马上重传这个数据包。

9.TCP拥塞控制

如果在数据包传递的时候一开始就把窗口设计的很大,一下子就传递了大量的数据很容易造成拥塞,因此tcp采用了慢启动+拥塞避免的方式。

1.首先把收发两端的窗口大小都设置为1,当收到ack信号时,将窗口大小翻倍。(慢启动)

2.窗口大小呈指数增长,增长很快,这个时候就会产生丢包问题,我们可以通过3个重复的ack或者超过重传超时时间来判断丢包现象。丢包之后记录这个窗口的大小,将窗口大小除以2,得到窗口大小阀值。并且将当前窗口大小变为1。

⚠️:这个地方有两种处理方法一种就是因为超过了重传等待时间而检测到丢包的话我们就把窗口大小变为1,然后开始慢启动。tcp tahoe

另一种就是因为收到了三个重复的ack之后监测到丢包,我们就把窗口大小变成原来的一半然后每次窗口大小加1。tcp reno

3.如果再次出现丢包,就重复之前的步骤。

拥塞控制过程

10.流量控制

流量控制和拥塞控制是两个不同的概念,流量控制是接收端控制发送端的发送速度,接收端有一个缓冲区,流量控制就是控制发送的速度避免发送的太快导致缓冲区溢出,从而导致丢包。

流量控制是用窗口实现的,实现流量控制的方式就是让接收端的窗口大于发送端的窗口。

接收端回传给发送端的包里有一个rwnd,就是接受窗口的大小,这个数值会被放在tcp报文的头部回传给发送端。

⚠️:

拥塞控制主要是为了防止网络过载,给整个网络造成过多的负担。

而流量控制主要是针对点对点的数据传输,防止因为发送方的发送速度比接收方的接受速度快造成丢包。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,932评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,554评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,894评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,442评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,347评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,899评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,325评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,980评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,196评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,163评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,085评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,826评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,389评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,501评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,753评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,171评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,616评论 2 339

推荐阅读更多精彩内容