网站优化 网站建设公司,制作图片的软件哪个好,百度竞价推广培训,安美东莞网站建设计算机网络--计算机网络概念
计算机网络--物理层
计算机网络--数据链路层
计算机网络--网络层
计算机网络--传输层
计算机网络--应用层
1. 概述
1.1 传输层的意义
网络层可以把数据从一个主机传送到另一个主机#xff0c;但是没有和进程建立联系。
传输层就是讲进程和…计算机网络--计算机网络概念
计算机网络--物理层
计算机网络--数据链路层
计算机网络--网络层
计算机网络--传输层
计算机网络--应用层
1. 概述
1.1 传输层的意义
网络层可以把数据从一个主机传送到另一个主机但是没有和进程建立联系。
传输层就是讲进程和收到的数据联系到一起使数据能够为应用服务。
所以说传输层是主机才有的层次 1.2 传输层的两个协议 1.3 传输层的寻址和端口
端口号只用于计算机分辨本地进程总共有2^1665536种端口号端口号有很多种不能随便使用。 1.3.1 常见的应用程序端口号 2. UDP协议
2.1 UDP概述
因为UDP一次发送一个完整报文不会分片所以需要应用层传输过来的数据不要太大否则网络层分片任务就很重但是也不能太小不然效率较低。
UDP适合一些实时应用因为实时应用延迟要求高需要立即响应。 2.2 UDP首部格式 2.2.1 UDP的校验位构成
这里的伪首部只是用来计算检验和的计算完了就丢弃可以见下UDP的校验方式。 2.2.2 UDP校验方式
总结一下步骤
在发送端的时候
就是将每一行4字节拆成两部分左右平均2字节大小将这两字节数据写成二进制那么2字节一共就需要2*816位。此时检验和没有计算默认填充0同时如果数据字段不整齐则用0补齐这样就可以写出几十行二进制数如图中所示。计算着几十行二进制数按二进制反码运算求和二进制反码运算可以参考二进制反码求和运算得到的最后简介再反码之后将反码之后的放入原来的检验和字段。
在接收端的时候
与发送端的时候不同的是此时检验和字段不是0了。按照发送端的步骤再将所有数据写成二进制进行二进制反码运算求和。如果最后得到结果全1就是没问题否则丢弃。 3. TCP协议
3.1 TCP协议的特点
TCP必须要建立连接之后才可以进行数据交换所以TCP是面向连接的。 TCP传输数据是随机切割数据的。 3.2 TCP报文段的首部
见上图可以看到TCP是将数据随机分割后加上TCP头传输的所以序号就是为了标记这些随机分割之后的数据这里把第一个字节的编号当成序号。
确认号就是收到之后做一下标记代表这之前的都收到了希望收到的下一个编号的数据就是确认号打头的那个数据偏移量就是为了标记一下距离TCP开始多少字节是数据这里的单位是4B这个偏移量就是TCP首部长度。 窗口就是接收方告诉发送方还有多少地方缓存可以放数据。
紧急指针就是告诉TCP从哪里到哪里是紧急数据。 3.2.1 TCP的六个控制位
紧急位URG
URG的特点就是让数据插队URG1的就会在缓存中被提前到第一个传输 确认位ACK 推送为PSH
就是接收端的URG将PSH1的数据尽快接收 注意一下如果没有PSH一般都是接收方缓存满了之后再将数据发送到主机 复位RST 同步位SYN
A和B主机要建立连接就A先发一个报文其中SYN1 B收到之后也回复一个SYN1的报文代表接受连接 终止位FIN 3.3 TCP连接管理
3.3.1 TCP三次握手建立连接 第一段的意思是
SYN1(A)要建立连接了 seqx随机因为还没有数据所以写什么都无所谓
第二段的意思是
SYN1我(B)同意你(A)建立连接 ACK1连接建立了之后的ACK必须都置为1 seqy随机因为还没有数据所以写什么都无所谓 ackx1之前发送方(A)说发送的是第x位数据虽然发送方是瞎说的所以我(B)要的是x1位数据
第三段的意思是
SYN0SYN只有在建立连接时才为1其他时候均设为0 ACK1连接建立了之后的ACK必须都置为1 seqx1我(A)发送的报文段的第一个字节就是x1 acky1之前接收方(B)说发送的是第y位数据虽然接收方是瞎说的所以我(A)要的是y1位数据
注意一下TCP是双向的所以不存在绝对不变的发送方接收方这里的两台主机都同时是发送方和接收方。 TCP三次握手特定导致的SYN洪泛攻击 3.3.2 TCP四次挥手连接释放 第一段的意思是
FIN1(A)要释放连接了 sequ发了好多数据这里只是用u指代一下这里u是有确定值的
第二段的意思是
ACK1连接建立了之后的ACK必须都置为1 seqv发了好多数据这里只是用v指代一下这里v是有确定值的 acku1之前发送方(A)说发送的是第u位数据所以我(B)要的是u1位数据尽管此时A已经决定释放连接了
第三段的意思是
FIN1(B)要释放连接了 ACK1连接建立了之后的ACK必须都置为1 seqw发了好多数据这里只是用w指代一下这里w是有确定值的 acku1之前发送方(A)说发送的是第u位数据所以我(B)要的是u1位数据因为A直接不发数据了所以第二段第三段的ack都是u1
第四段的意思是
ACK1连接建立了之后的ACK必须都置为1 sequ1之前发的数据时第u位数据B也要第u1位数据所以我发第u1位数据 ackw1之前发送方(B)说发送的是第w位数据所以我(A)要的是w1位数据
为什么需要等待计时2MSL
因为这样可以保证B可以收到A的终止报文段进而进入关闭状态。 比如说如果A的第四段报文丢失那么等待一个MSL之后B就会重传第三段报文花费小于1MSL之后A就会再收到第三段报文之后就可以再次向B发送第四段报文提示B关闭连接。 3.4 TCP可靠传输
TCP是提供可靠传输UDP这种本身还是不可靠传输的就再靠应用层解决了。 3.4.1 序号
就是TCP根据下方数据链路层的MTU最大传输单元来随即将数据切割成好几端并且进行编号 3.4.2 确认
发送方每一次发送数据之后都需要接收方进行确认。 TCP使用的是累计确认机制就是从第一个丢失的字节开始请求丢失的报文段。如图中456丢失78到达但仍然请求发送的数据序号是4 3.4.3 重传
为什么要使用自适应算法网络环境太复杂路径又长又短RTT设置短了照顾不了距离远的RTT设置长了又导致网络利用率降低所以使用RTTs 3.5 TCP流量控制
简单来说就是接收方可以动态的发送信息告诉发送方发送窗口的大小。 接收方接受不过来了就让发送方发送窗口小点这样发送方发送的速率就慢下来了接收方就有时间处理它的数据了。 接受方处理完了也可以发送请求让发送方发送窗口大点这样发送方发送的速率就快起来了接收方就可以处理更多数据而不是空闲等着收数据了。 3.5.1 计时器
在本例子中使用的累计确认机制一次回复收到ack201和三次流量控制机制。 但是有一个情况就是如果最后B不允许A再发送数据了B在处理完数据之后想要恢复窗口大小时发送的有rwnd大小的数据报丢了怎么办此时A有B的指令在前发送窗口为0无法发送数据B也在等待A回复造成了类似死锁的现象 解决方法使用计时器 3.6 TCP拥塞控制
流量控制是对单独一个来说的拥塞控制是一群 3.6.1 拥塞控制四种算法
这里虽然是四种算法但是通常是两两结合进行使用 3.6.2 慢开始和拥塞避免
这里开始时以指数形式增长ssthresh的意思是慢开始门限代表从这个地方注入的报文段就比较多了需要开始慢速增加了。 之后一段都是线性增长每次增加1直至达到网络拥塞状态 瞬间将cwnd设置为1同时调整原来的ssthresh的值到之前达到网络拥塞状态的1/2,这里是24降到12 重复以上步骤但是注意此时ssthresh变了之后线性增长的转折点也变了 3.6.3 快重传和快恢复
这里和上面的慢开始和拥塞避免的一开始步骤差不多都是先指数增长再转变为线性增长。 不同的点是快重传和快恢复算法是在收到连续的ack确认之后执行这里的ack就是冗余ack冗余ack的特点是如果多次对某一段请求的数据没有被收到达到一定数目之后就会立即执行重传。但是此时只是降到现在cwnd的一半再重新线性增长。而不是像慢开始和拥塞避免的从头开始 4. 本章思维导图