计算机网络 | 传输层

计算机网络 | 传输层

  • 计算机网络 | 传输层
    • 功能概述
    • UDP协议
    • TCP协议
      • TCP协议的特点
      • TCP报文段
      • TCP连接管理
        • TCP连接的建立
        • TCP连接的释放
      • TCP可靠传输
        • 序号
        • 确认
        • 重传
      • TCP流量控制
      • TCP拥塞控制
        • 慢开始和拥塞避免
        • 快重传和快恢复
    • 第5章总结

参考视频:王道计算机考研 计算机网络

参考书:《2022年计算机网络考研复习指导》

计算机网络 | 传输层

在这里插入图片描述

功能概述

传输层是主机才有的层次。

在这里插入图片描述

复用:发送方的不同应用进程都可以使用同一个传输层协议传送数据。

分用:接收方的传输层在去掉报文的首部后能把数据正确交付到目的应用进程。

注:网络层也有复用和分用功能。但网络层的复用指发送方不同协议的数据都可以封装成IP数据报发送出去,分用指接收方的网络层在去掉报文的首部后能把数据正确交付给相应的协议。

端口:

在这里插入图片描述

常用的熟知端口号:

应用程序熟知端口号
FTP21
TELNET23
SMTP25
DNS53
TFTP69
HTTP80
SNMP161

套接字:一个通信端点,在网络中采用发送方和接收方的套接字来识别端点。

套接字 Socket = (IP地址:端口号),它唯一地标识网络中的一台主机和其上的一个应用(进程)。

无连接服务和面向连接服务:

在这里插入图片描述

UDP协议

概述:

在这里插入图片描述

UDP不保证可靠交付,所有维护可靠性的工作在应用层完成。

UDP是面向报文的。报文不可分割,是UDP数据报处理的最小单位。报文过大或过小都会降低网络层的效率。

UDP首部占8B,首部格式:

在这里插入图片描述

当传输层从网络层收到UDP数据报时,就根据首部的目的端口把UDP数据报通过相应端口上交给应用进程。

如果接收方UDP发现接收报文的目的端口号错误,丢弃该报文,并发送ICMP“端口不可达”差错报文给发送方。

UDP的校验位构成:

在这里插入图片描述

这里的伪首部只是用来计算检验和的,计算完了就丢弃。

UDP校验方式:

在这里插入图片描述

在发送端的时候:

  1. 校验和字段全设为0,添加伪首部。
  2. 将每一行(4字节)拆成两部分,左右平均2字节大小,将这两字节数据写成二进制,那么2字节一共就需要2*8=16位。同时如果数据字段不整齐,则用0补齐,这样就可以写出几十行二进制数,如上图中所示。
  3. 计算着几十行二进制数按二进制反码运算求和,二进制反码运算可以参考二进制反码求和运算,得到的最后结构再反码,之后将反码之后的放入原来的检验和字段。

在接收端的时候:

  1. 与发送端的时候不同的是,此时检验和字段不是0了。
  2. 按照发送端的步骤再将所有数据写成二进制进行二进制反码运算求和。
  3. 如果最后得到结果全1就是没问题,否则丢弃。

注意:

  1. 校验时,若UDP数据报的长度不是偶数个字节,则需填入一个全0字节,但此字节和伪首部一样,是不发送的。
  2. 若UDP校验和校验出UDP数据报是错误的,那么可以丢弃,也可以附上错误报告交付给上层。
  3. 通过伪首部,不仅可以检查源端口号、目的端口号和UDP数据报的数据部分。还可以检查IP数据报的源IP地址和目的地址。

TCP协议

TCP协议的特点

TCP协议的主要特点:

在这里插入图片描述

  • UDP报文的长度由发送应用进程决定。
  • TCP报文的长度根据接收方给出的窗口值和当前网络拥塞程度来决定。如果应用进程传送到TCP缓存的数据块太长,TCP会分段传送;如果太短,TCP也可以等到积累足够多的字节后再组成报文段发送。

TCP报文段

TCP传送的数据单元称为报文段。

TCP报文段 = 首部 + 数据。

TCP报文段的首部最短为20B,最长为60B。前20B是固定的,后面有4N字节是根据需要而增加的选项,通常长度为4B的整数倍。

源端口和目的端口:各占2B。端口是传输层和应用层的服务接口。

在这里插入图片描述

保留:占6位,保留为今后使用,目前全为0。

在这里插入图片描述

  • 紧急位URG:让数据插队,URG=1的就会在缓存中被提前到第一个传输。
  • 确认位ACK:仅当ACK=1时确认号有效。
  • 推送位PSH:将PSH=1的报文段尽快交付给接收应用进程,而不是等到缓存满了再向上交付。
  • 复位RST:RST=1时,表明TCP连接中出现严重差错(比如:主机崩溃),必须释放连接,再重新建立连接。
  • 同步为SYN:SYN=1表明这是一个连接请求或连接接受报文。SYN=1、ACK=0表明是连接请求报文,对方若同意建立连接,则在响应报文中使用SYN=1、ACK=1。
  • 终止位FIN:当FIN=1时,表明此报文段的发送方的数据发送完毕,并要求释放连接。

在这里插入图片描述

填充:为了使整个首部长度是4B的整数倍。

注:紧急数据在报文段数据的最前面。

TCP连接管理

TCP连接的三个阶段:

  1. 建立连接
  2. 数据传送
  3. 释放连接

TCP连接把连接作为最基本的抽象,TCP连接的端口为套接字或插口。

TCP连接的建立

TCP连接的建立采用C/S方式。

在这里插入图片描述

第一段的意思是:
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提供的是全双工通信,这里的两台主机都同时是发送方和接收方。

服务器的资源是在完成第二次握手时分配的,客户端的资源是在完成第三次握手时分配的。这使得服务器易于受到SYN洪泛攻击。

SYN洪泛攻击:

在这里插入图片描述

解决方法:设置SYN cookie。

TCP连接的释放

在这里插入图片描述

第一段的意思是:
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关闭连接。

TCP可靠传输

在这里插入图片描述

序号

TCP首部的序号字段保证数据能有序提交给应用层。

TCP把数据视为一个无结构、有序的字节流,每个字节都编上一个序号。

序号字段的值:本报文段所发送的数据的第一个字节的序号。

确认

发送方每一次发送数据之后都需要接收方进行确认。

TCP首部的确认号字段是期望收到对方的下一个报文段的数据的第一个字节的序号。

发送方缓存区会继续存储那些已发送但未收到确认的报文段,以便重传。

TCP默认采用累积确认的机制,即TCP只确认数据流中至第一个丢失字节为止的字节。

示例:

在这里插入图片描述

重传

有两种事件会导致TCP对报文段进行重传:超时和冗余ACK。

超时重传:TCP每发送一个报文段,就对这个报文段设置一次计时器,计时器到期但还未收到确认时,就要重传该报文段。

TCP采用自适应算法,它记录每个报文段的发出时间和收到确认时间,两者之差就是报文段的往返时间(Round-Trip Time,RTT)。

TCP保留了一个加权平均往返时间RTTs,它会随新测量RTT值的变化而变化。

显然,超时计时器设置的超时重传时间(Retransmission Time-Out,RTO)应该略大于加权平均往返时间RTTs,但也不能大太多。

冗余ACK:再次确认某个报文段的ACK,而发送方先前已经收到过该报文段的确认。

在这里插入图片描述

TCP流量控制

接收方可以动态地发送信息告诉发送方发送窗口的大小。

接收方接受不过来了就让发送方发送窗口小点,这样发送方发送的速率就慢下来了,接收方就有时间处理它的数据了。

接受方处理完了也可以发送请求让发送方发送窗口大点,这样发送方发送的速率就快起来了,接收方就可以处理更多数据而不是空闲等着收数据了。

在这里插入图片描述

示例:

在这里插入图片描述

有一个情况就是,如果最后B不允许A再发送数据了,B在处理完数据之后想要恢复窗口大小时发送的有rwnd大小的数据报丢了怎么办?此时A有B的指令在前,发送窗口为0无法发送数据,B也在等待A回复,造成了类似死锁的现象。

解决方法:使用计时器。发送方主动向接收方询问接收窗口大小rwnd,这和超时重传无关。

传输层和数据链路层的流量控制的区别是:

  • 传输层定义端到端的流量控制,数据链路层定义点到点的流量控制。
  • 数据链路层的滑动窗口协议的滑动窗口大小不能动态变化,而传输层的可以。

TCP拥塞控制

在这里插入图片描述

拥塞控制是全局性的过程,而流量控制是端到端的问题。

TCP拥塞控制的四种算法:

  1. 慢开始
  2. 拥塞避免
  3. 快重传
  4. 快恢复

TCP协议要求发送方维护两个窗口:

  1. 接收窗口rwnd
  2. 拥塞窗口cwnd

在这里插入图片描述

慢开始和拥塞避免

每次发送方接收到接收方传回的确认报文后,就根据其中的cwnd值立即调整拥塞窗口的大小,再开始新的一个传输轮次。

过程:

  1. 开始时以指数形式增长,ssthresh的意思是慢开始门限,代表从这个地方注入的报文段就比较多了,需要开始慢速增加了。
  2. 之后一段都是线性增长,每次增加1,直至达到网络拥塞状态。
  3. 发现网络拥塞后,瞬间将cwnd设置为1,同时调整原来的ssthresh的值到之前达到网络拥塞状态的1/2(24降到12)。
  4. 重复以上步骤,注意此时ssthresh变了之后,线性增长的转折点也变了。

在这里插入图片描述

快重传和快恢复

快重传:当发送方连续收到三个重复的ACK报文时,直接重传接收方未收到的报文段,而不必等待那个报文段设置的重传计时器超时。

注:快重传并非取消重传计时器。

快恢复:当发送方连续收到三个冗余ACK(重复确认)时,执行“乘法减小”算法,把慢开始门限ssthresh设置为此时发送方拥塞窗口大小cwnd的一半,然后执行拥塞避免算法,使拥塞窗口缓慢地线性增大。

在这里插入图片描述

第5章总结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/164050.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS进阶

目标:掌握复合选择器作用和写法;使用background属性添加背景效果 01-复合选择器 定义:由两个或多个基础选择器,通过不同的方式组合而成。 作用:更准确、更高效的选择目标元素(标签)。 后代选…

Adobe携手网易有道,助力高校师生释放创意潜能

当Adobe创意设计在线课程进入中国高等院校,会给高校师生带来怎样的变化? 为了助力中国高等院校师生充分释放创意潜能,10月18日,Adobe宣布携手网易有道,面向中国的高等院校推出Adobe创意设计在线课程。 【Adobe携手网易…

Python 异常

目录 1 导引问题2 异常机制本质2.1 python 中一切都是对象,异常也采用对象的方式来处理。处理过程: 3 解决异常问题的态度4 异常解决的关键:定位5 try...一个except 结构6 try...多个except 结构7 try...except...else 结构8 try...except...…

Linux下使用openssl为harbor制作证书

openssl是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证…

uni-app:js二维数组与对象数组之间的转换

一、二维数组整理成对象数组 效果 [ ["前绿箭","DI10","RO1"], ["前红叉","DI2","RO2"], ["后绿箭","DI12","RO3"], ["后红叉","DI4","RO6"] ] …

Bootstrap的媒体对象组件(图文展示组件),挺有用的一个组件。

Bootstrap的.media类是用于创建媒体对象的,媒体对象通常用于展示图像(图片)和文本内容的组合,这种布局在展示新闻文章、博客帖子等方面非常常见。.media类使得创建这样的媒体对象非常简单,通常包含一个图像和相关的文本…

Redis实现附近商户

GEO数据结构的基本用法 GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有: GEOADD:添加一个地理空间信息&#xf…

初阶数据结构-常见的排序算法

排序 排序的概念常见的排序算法常见排序算法的实现数组的打印 插入排序直接插入排序的实现希尔排序( 缩小增量排序 )希尔排序的实现 交换排序冒泡排序冒泡排序的实现选择排序选择排序的实现堆排序堆排序的实现快速排序快速排序非递归 归并排序归并排序的递归实现归并排序的非递…

数据分析:密度图

目前拥有的数据如图,三列分别对应瑕疵种类,对应的置信 度,x方向坐标。 现在想要做的事是观看瑕疵种类和置信度之间的关系。 要显示数据分布的集中程度,可以使用以下几种常见的图形来观察: 1、箱线图(Box P…

跨境电商:产业带的深度赋能

近年来,中国跨境电商平台崭露头角,成为推动国内产业带转型升级和出海的新引擎。这一充满活力的领域不仅让中国制造走向世界,也为国内众多产业提供了数字化升级的机会,实现了“小单快反”和按需供应。 专业跨境电商平台如SHEIN和阿…

【网络】网络编程套接字(一)

网络编程套接字 一 一、网络编程中的一些基础知识1、认识端口号2、认识TCP协议和UDP协议3、网络字节序 二、socket编程1、sockaddr结构2、简单的UDP网络程序Ⅰ、服务器的创建Ⅱ、运行服务器Ⅲ、关于客户端的绑定问题Ⅳ、启动客户端Ⅴ、本地测试Ⅵ、网络测试 一、网络编程中的一…

【试题002】C语言有关于sizeof的使用

1.说明&#xff1a;sizeof()是测量数据类型所占用的内存字节数&#xff0c;字符串常量在存储时除了要存储有效字节外&#xff0c;还要存储一个字符串结束志‘\0’。 2.代码举栗子&#xff1a; #include <stdio.h> int main() {char str[] "book";printf(&qu…

Jupyter Notebook 设置黑色背景主题

Jupyter Notebook 设置黑色背景主题 # 包安装 pip install jupyterthemes -i https://mirrors.aliyun.com/pypi/simple pip install --upgrade jupyterthemes # 查看可用主题 jt -l # monokai暗背景&#xff0c;-f(字体) -fs(字体大小) -cellw(占屏比或宽度) -ofs(输出段的字…

黑马JVM总结(三十七)

&#xff08;1&#xff09;synchronized-轻量级锁-无竞争 &#xff08;2&#xff09;synchronized-轻量级锁-锁膨胀 重量级锁就是我们前面介绍过的Monitor enter &#xff08;3&#xff09;synchronized-重量级锁-自旋 &#xff08;4&#xff09;synchronized-偏向锁 轻量级锁…

中科芯与IAR共建生态合作,IAR集成开发环境全面支持CKS32系列MCU

中国上海–2023年10月18日–嵌入式开发软件和服务的全球领导者IAR今日宣布&#xff0c;与中科芯集成电路有限公司&#xff08;以下简称中科芯&#xff09;达成生态合作&#xff0c;IAR已全面支持CKS32系列MCU的应用开发。这一合作将进一步推动嵌入式系统的发展&#xff0c;并为…

CSS魔法!如何将任意CSS类型转换为数值?

在 CSS 中有各式各样的类型值&#xff0c;例如 1rem、10vw、100cqw等等&#xff0c;这些相对值给与了 CSS 强大的适应能力。但有时候&#xff0c;我们还需要知道这些相对值所对应的真实值&#xff0c;也就是px值&#xff0c;比如在移动端&#xff0c;我们经常会设置这样的根字号…

简单了解一下:Node全局对象和事件监听和触发

Node的全局对象&#xff0c;就是整个应用都能引用的对象。Node本身内置了多个全局变量、全局对象和全局函数。 全局变量有两个&#xff1a;__filename和__dirname&#xff0c; __filename&#xff1a;表示当前正在执行的脚本文件名&#xff1b; __dirname&#xff1a;当前脚本…

【公益案例展】广碳所——恒生电子基于区块链技术打造区域性碳中和登记系统...

‍ 恒生电子公益案例 本项目案例由恒生电子投递并参与数据猿与上海大数据联盟联合推出的 #榜样的力量# 《2023中国数据智能产业最具社会责任感企业》榜单/奖项”评选。 ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 全球气候变暖、温室效应明显、二氧化碳排放增多&#…

CSS之Flex布局的详细解析

Flex布局 目标&#xff1a;熟练使用 Flex 完成结构化布局 01-标准流 标准流也叫文档流&#xff0c;指的是标签在页面中默认的排布规则&#xff0c;例如&#xff1a;块元素独占一行&#xff0c;行内元素可以一行显示多个。 02-浮动 基本使用 作用&#xff1a;让块元素水平排列…

Excel提高工作效率常用功能

定位快捷键使用 CtrlG或者F5 根据不同类别插入空行 例&#xff1a;以下表&#xff0c;以部门为单位&#xff0c;每个部门后插入空白行 部门姓名出勤基本工资岗位津贴公体加班绩效基数工龄应发合计财务部姓名73115002101710财务部姓名11116006003401502363财务部姓名5271000…