立山 发表于 2024-6-14 23:13:35

计算机网络--传输层

计算机网络--计算机网络概念
计算机网络--物理层
计算机网络--数据链路层
计算机网络--网络层
计算机网络--传输层
计算机网络--应用层
1. 概述

1.1 传输层的意义

网络层可以把数据从一个主机传送到另一个主机,但是没有和进程建立联系。
传输层就是讲进程和收到的数据联系到一起,使数据可以或许为应用服务。
所以说传输层是主机才有的层次!

https://img-blog.csdnimg.cn/img_convert/0eb3b6120f7fabf3bb55f226250d82b7.png
1.2 传输层的两个协议


https://img-blog.csdnimg.cn/img_convert/4ea071bfcb0f409fb76e26c15fc2e428.png
1.3 传输层的寻址和端口

端口号只用于计算机分辨本地进程,统共有2^16=65536种端口号,端口号有很多种,不能恣意使用。

https://img-blog.csdnimg.cn/img_convert/f32e78d3f0d26919de8928b217fc386d.png
1.3.1 常见的应用程序端口号


https://img-blog.csdnimg.cn/img_convert/f52bbfa4d65cf50b142d4710b49eb7db.png
2. UDP协议

2.1 UDP概述

由于UDP一次发送一个完备报文不会分片,所以须要应用层传输过来的数据不要太大,否则网络层分片使命就很重,但是也不能太小,否则效率较低。
UDP适合一些实时应用,由于实时应用耽误要求高,须要立刻响应。

https://img-blog.csdnimg.cn/img_convert/65e13759a5ce3b7620963b164057f18c.png
2.2 UDP首部格式


https://img-blog.csdnimg.cn/img_convert/5e4fbe539ba1c935d13f4a265e1c3059.png
2.2.1 UDP的校验位构成

这里的伪首部只是用来计算查验和的,计算完了就丢弃,可以见下UDP的校验方式。

https://img-blog.csdnimg.cn/img_convert/14ef50af315db241bceab58eef2ae5e1.png
2.2.2 UDP校验方式

总结一下步调:

在发送端的时候:



[*]就是将每一行(4字节)拆成两部分,左右平均2字节大小,将这两字节数据写成二进制,那么2字节一共就须要2*8=16位。此时查验和没有计算,默认填充0,同时如果数据字段不整洁,则用0补齐,这样就可以写出几十行二进制数,如图中所示。
[*]计算着几十行二进制数按二进制反码运算求和,二进制反码运算可以参考二进制反码求和运算,得到的末了简介再反码,之后将反码之后的放入原来的查验和字段。
在接收端的时候:



[*]与发送端的时候差异的是,此时查验和字段不是0了。
[*]按照发送端的步调再将所有数据写成二进制举行二进制反码运算求和。
[*]如果末了得到结果全1就是没题目,否则丢弃。

https://img-blog.csdnimg.cn/img_convert/7271875da16168e417c4b725d38233a9.png
3. TCP协议

3.1 TCP协议的特点

TCP必须要建立连接之后才可以举行数据交换,所以TCP是面向连接的。

https://img-blog.csdnimg.cn/img_convert/00f73b7a4518d91c01782e6e1e1697ad.png

TCP传输数据是随机切割数据的。

https://img-blog.csdnimg.cn/img_convert/23105b665d003c3a2658227c150e6650.png
3.2 TCP报文段的首部

见上图,可以看到TCP是将数据随机分割后加上TCP头传输的,所以序号就是为了标记这些随机分割之后的数据,这里把第一个字节的编号当成序号。
确认号就是收到之后做一下标记,代表这之前的都收到了,盼望收到的下一个编号的数据就是确认号打头的那个数据偏移量就是为了标记一下间隔TCP开始多少字节是数据,这里的单位是4B,这个偏移量就是TCP首部长度。

https://img-blog.csdnimg.cn/img_convert/71f85f5b43e43a26f618f51e828ea069.png

窗口就是接收方告诉发送方,还有多少地方(缓存)可以放数据。
紧急指针就是告诉TCP从那里到那里是紧急数据。

https://img-blog.csdnimg.cn/img_convert/6781a7d3dd0db025741f33c55a1fdffa.png
3.2.1 TCP的六个控制位

紧急位URG

URG的特点就是让数据插队,URG=1的就会在缓存中被提前到第一个传输
 
https://img-blog.csdnimg.cn/img_convert/6f872ac8cd3c87ebc80ca8bf6dcabce7.png

https://img-blog.csdnimg.cn/img_convert/76248325e2a200a9b3da61776c027c70.png
确认位ACK


https://img-blog.csdnimg.cn/img_convert/9baa01a9ecec3b6b74789d86ed3f07d0.png
推送为PSH

就是接收端的URG,将PSH=1的数据尽快接收
留意一下,如果没有PSH,一般都是接收方缓存满了之后再将数据发送到主机
https://img-blog.csdnimg.cn/img_convert/7915af7390b74a6e261900e839419933.png
复位RST


https://img-blog.csdnimg.cn/img_convert/9c2652a1740e6a2172d86bcf7d97af79.png
同步位SYN

A和B主机要建立连接,就A先发一个报文,其中SYN=1
B收到之后也回复一个SYN=1的报文,代表接受连接
https://img-blog.csdnimg.cn/img_convert/7f093abb664f68f98920f061daa700e0.png
终止位FIN


https://img-blog.csdnimg.cn/img_convert/8cfc63112699baa40eea2e1a17ca867c.png
3.3 TCP连接受理

3.3.1 TCP三次握手(建立连接)


https://img-blog.csdnimg.cn/img_convert/dbe25dc86752b7274fe75f2e6673ae71.png


[*]第一段的意思是
SYN=1:(A)要建立连接了!
seq=x(随机):由于还没有数据,所以写什么都无所谓


[*]第二段的意思是
SYN=1:我(B)同意你(A)建立连接!
ACK=1:连接建立了,之后的ACK必须都置为1
seq=y(随机):由于还没有数据,所以写什么都无所谓
ack=x+1:之前发送方(A)说发送的是第x位数据(固然发送方是瞎说的),所以我(B)要的是x+1位数据


[*]第三段的意思是
SYN=0:SYN只有在建立连接时才为1,其他时候均设为0
ACK=1:连接建立了,之后的ACK必须都置为1
seq=x+1:我(A)发送的报文段的第一个字节就是x+1
ack=y+1:之前接收方(B)说发送的是第y位数据(固然接收方是瞎说的),所以我(A)要的是y+1位数据
留意一下,TCP是双向的,所以不存在绝对稳固的发送方接收方,这里的两台主机都同时是发送方和接收方。

https://img-blog.csdnimg.cn/img_convert/1c6169e7248f01424488f056f0b0aba1.png
TCP三次握手特定导致的SYN洪泛攻击


https://img-blog.csdnimg.cn/img_convert/afb3f5306dfd43eebff0dca702115645.png
3.3.2 TCP四次挥手(连接释放)


https://img-blog.csdnimg.cn/img_convert/158198d9417cb0df1551729cf8b97f31.png


[*]第一段的意思是
FIN=1:(A)要释放连接了!
seq=u:发了好多数据,这里只是用u指代一下,这里u是有确定值的


[*]第二段的意思是
ACK=1:连接建立了,之后的ACK必须都置为1
seq=v:发了好多数据,这里只是用v指代一下,这里v是有确定值的
ack=u+1:之前发送方(A)说发送的是第u位数据,所以我(B)要的是u+1位数据(尽管此时A已经决定释放连接了)


[*]第三段的意思是
FIN=1:(B)要释放连接了!
ACK=1:连接建立了,之后的ACK必须都置为1
seq=w:发了好多数据,这里只是用w指代一下,这里w是有确定值的
ack=u+1:之前发送方(A)说发送的是第u位数据,所以我(B)要的是u+1位数据(由于A直接不发数据了,所以第二段第三段的ack都是u+1)


[*]第四段的意思是
ACK=1:连接建立了,之后的ACK必须都置为1
seq=u+1:之前发的数据时第u位数据,B也要第u+1位数据,所以我发第u+1位数据
ack=w+1:之前发送方(B)说发送的是第w位数据,所以我(A)要的是w+1位数据


[*]为什么须要等待计时2MSL?
由于这样可以保证B可以收到A的终止报文段进而进入关闭状态。
比如说如果A的第四段报文丢失,那么等待一个MSL之后B就会重传第三段报文,花费小于1MSL之后A就会再收到第三段报文,之后就可以再次向B发送第四段报文提示B关闭连接。

https://img-blog.csdnimg.cn/img_convert/469f78c20f5122d4faf16f822ee0aba4.png
3.4 TCP可靠传输

TCP是提供可靠传输,UDP这种自己还是不可靠传输的就再靠应用层办理了。

https://img-blog.csdnimg.cn/img_convert/3629b9535a5b42f556c4d390591bd5d2.png
3.4.1 序号

就是TCP根据下方数据链路层的MTU(最大传输单元)来随即将数据切割成好几端并且举行编号
https://img-blog.csdnimg.cn/img_convert/442e6fb774964fbcad679bbad96013e5.png
3.4.2 确认

发送方每一次发送数据之后都须要接收方举行确认。
TCP使用的是累计确认机制,就是从第一个丢失的字节开始请求丢失的报文段。如图中456丢失,78到达,但仍然请求发送的数据序号是4
https://img-blog.csdnimg.cn/img_convert/cae0113cebf4a0ef018b346a3558de95.png
3.4.3 重传

为什么要使用自顺应算法?网络环境太复杂,路径又长又短,RTT设置短了照顾不了间隔远的,RTT设置长了又导致网络利用率降低,所以使用RTTs

https://img-blog.csdnimg.cn/img_convert/01f387b7b52b6f8c37ea7c3239f5b33f.png
3.5 TCP流量控制

简单来说就是接收方可以动态的发送信息告诉发送方发送窗口的大小。
接收方接受不过来了就让发送方发送窗口小点,这样发送方发送的速率就慢下来了,接收方就有时间处理它的数据了。
接受方处理完了也可以发送请求让发送方发送窗口大点,这样发送方发送的速率就快起来了,接收方就可以处理更多数据而不是空闲等着收数据了。
https://img-blog.csdnimg.cn/img_convert/20e15d5ba9ba2ad7695dac7149cf68e0.png
3.5.1 计时器

在本例子中,使用的累计确认机制(一次回复收到ack=201)和三次流量控制机制。
但是有一个情况就是,如果末了B不答应A再发送数据了,B在处理完数据之后想要恢复窗口大小时发送的有rwnd大小的数据报丢了怎么办?此时A有B的指令在前,发送窗口为0无法发送数据,B也在等待A回复,造成了类似死锁的征象
办理方法:使用计时器
https://img-blog.csdnimg.cn/img_convert/556ed9e43ea75d2bba4acf17e3e038b6.png
3.6 TCP拥塞控制

流量控制是对单独一个来说的,拥塞控制是一群
https://img-blog.csdnimg.cn/img_convert/34352fdadae1a5d2c346a87432626060.png
3.6.1 拥塞控制四种算法

这里固然是四种算法,但是通常是两两联合举利用用
https://img-blog.csdnimg.cn/img_convert/2a5b687fa514835818a3b4408f686f66.png
3.6.2 慢开始和拥塞避免

这里开始时以指数情势增长,ssthresh的意思是慢开始门限,代表从这个地方注入的报文段就比力多了,须要开始慢速增加了。
之后一段都是线性增长,每次增加1,直至到达网络拥塞状态
瞬间将cwnd设置为1,同时调整原来的ssthresh的值到之前到达网络拥塞状态的1/2,(这里是24降到12)
重复以上步调,但是留意此时ssthresh变了之后线性增长的转折点也变了
https://img-blog.csdnimg.cn/img_convert/670dde56e72535fc1c9c15d9006fd525.png
3.6.3 快重传和快恢复

这里和上面的慢开始和拥塞避免的一开始步调差不多,都是先指数增长再变化为线性增长。
差异的点是快重传和快恢复算法是在收到连续的ack确认之后实行,这里的ack就是冗余ack,冗余ack的特点是如果多次对某一段请求的数据没有被收到,到达肯定命目之后就会立刻实行重传。但是此时只是降到现在cwnd的一半,再重新线性增长。而不是像慢开始和拥塞避免的从头开始
https://img-blog.csdnimg.cn/img_convert/0a5e31ef75f6a786ab194ecf504b2b52.png
4. 本章思维导图


https://img-blog.csdnimg.cn/img_convert/66b1429f23ed1c9e4427807b9e0de377.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 计算机网络--传输层