物理层---传输数据比特流,而不是具体的传输媒体。
任务:确定传输媒体的接口的标准。
三大特性:
机械特性---规定连接时采用的接口形状和数据。
电气特性---规定传输的二进制的位数,电压的范围。
功能特性---指明某一个电平标识何种意义。
数据是什么?信号是什么?码元是什么?
数据---指传输信息的实体;数据的传输方式分为串行传输和并行传输。
串行传输----1个bit,1个bit的按照时间顺序的传输。网线。
并行传输----若干bit通过多条通信信道同时传输。网卡与芯片之间的信息传输。
信号---是数据的电气或电磁表现形式,是数据在传输过程中的存在形式
模拟信号---连续变化的信号
数字信号---取值仅允许有限的几个数值的信号
码元----是指一个固定时长的信号波形表示的一位K进制数字,是数字信号的计量单位。
速率---数据率,数据传输的速率。表示单位时间内传输的数据量。
一般数据率使用码元传输速率和信息传输速率表示。
码元传输速率----波特率(Baud)
信息传输速率----比特率(b/s)
带宽---最高的数据率。
一般使用比特率来描述。
两者之间的关系
若一个码元携带n bit的信息量,则M Baud的码元传输速率所对应的信息传输速率为M*n b/s通信交换技术
电路交换
在进行数据传输前,两个节点之间,必须先建立一条专用(双方独占)的物理通信路径。
报文交换
数据交换的单位是报文,报文携带有目的地址,源地址等信息。存储-转发方式。
特点:存储接收到的报文,判断其目的地址以选择路径,最后,在下一跳转发设备空闲时,将数据
转发给下一跳设备。
优点
1、传输时延小,因为是专用通道
2、有序传输--->没有乱序行为
3、没有冲突
4、使用范围广--->模拟信号和数字信号都可以传输
5、实用性强
缺点
1、线路独占,信道使用率低
2、灵活性差
3、没有数据存储能力分组交换
通信双方以分组为单位,使用存储-转发机制实现数据交互的通信方式。---包交换。
包交换:将用户通信的数据划分成多个更小的等长数据段,在每个数据段的前面都加上必要的控制
信息,每个携带有控制信息的数据段就构成了一个分组。
数据报分组交换
虚电路分组交换
优点:
1、无需建立连接
2、动态的分配线路:交换设备先存储报文,然后选择一条合适的空闲线路,将报文转发出去。
3、线路的可靠性高
4、线路利用率高--->可以为多个目标提供服务
缺点:
1、数据报文进入交换节点后,需要经历,存储--转发,其本质是在交换设备内部进行数据检测。时延较大
2、只适用于数字信号
优点:
1、线路利用率高
2、简化数据存储过程
3、加速传输:逐个报文单独选择链路进行发送,同步进行。
4、减小了数据出错的几率
缺点:
1、需要传输额外的信息---每个小的分组都需要添加上控制信息(源目IP、源目MAC)
2、因为分组是同步传输的,所以可能出现失序、丢失或重复的分组。数据链路层
数据链路--->指网络中两个节点之间的逻辑通道。用于实现控制数据传输的硬件和软件加载到物理链
路上,从而形成一种数据链路。
封装成帧--->数据链路层将上层数据的分组信息,以数据帧的格式进行传输。
数据帧长度=数据长度+首部长度+尾部长度
帧定界--->帧首部和尾部包含的控制信息,其中有一部分信息代表的含义是数据帧的开始和结束。
最大传输单元(MTU):为了提高数据帧的传输效率,使得数据帧中的数据部分大小尽可能的大于
首部和尾部的长度,但该数值不可以过大。1500字节(在以太网环境下)
数据帧的编码---->零比特填充的首位标志法。违规编码法。曼彻斯特编码。
介质访问控制
MAC子层----介质访问控制---负责控制和连接物理层的硬件
共享介质
多个设备共享一个通信介质的网络模式。
半双工模式
访问控制:通过一种机制来控制哪个设备可以使用通信介质。
争用方式--->载波侦听多路访问(CSMA)
网络中的每个站点,采用先到先得的方式占用信道。
以太网中使用的是CSMA/CD机制
令牌传递方式
应用在一个叫做物理星型拓扑或逻辑环形拓扑中,通过令牌的方式来传输数
据。
令牌:一个特殊的数据帧。
非共享介质
每个站点直连交换机,由交换机负责转发数据帧的模式。
以太网组网方式,使用全双工通信。
LLC子层------逻辑链路控制---负责为逻辑链路提供服务的
网络层
逻辑寻址--->尽最大的努力交付数据服务。
路由器--->网络互联和路由选择。
路由选择----确定路径
按照复杂的路由算法完成。
分组转发----对分组所采取的动作
路由器根据转发信息表,将用户的数据从合适的端口发送出去。转发信息表:FIB表单--->是通过路由表RIB递归出来的。
DHCP协议
动态主机配置协议,是典型的C/S架构协议。客户端/服务端,谁先发送数据,谁就是客户端。
Discover报文---广播
传输层使用UDP封装。源端口68;目端口67。
网络层使用IP协议封装。源IP:0.0.0.0 目IP:255.255.255.255
数据链路层使用以太网协议封装。源MAC:PC发送本数据的网卡的MAC地址 目MAC:全F
Offer报文---单播服务器收到discover报文后,首先解封装,然后判断本地是否还有待分配的IP地址,如果存
在,则回复Offer报文,如果不存在,则不回复信息。
应用层:携带了待分配的IP地址(68.85.2.101),掩码、网关等相关信息
源端口:67;目端口:68
源IP:68.85.2.1;目IP:68.85.2.101
源MAC:路由器;目MAC:PC
Request报文----广播
会携带要申请的IP地址(68.85.2.101)。
源端口:68;目端口:67
源IP:0.0.0.0;目IP:255.255.255.255
源MAC:PC;目MAC:全F
ACK报文----单播
源端口:67;目端口:68
源IP:68.85.2.1;目IP:68.85.2.101
源MAC:路由器;目MAC:PC
PC在获取到IP地址后,会连续发送三次免费ARP报文,用来探测网络中是否存在IP地址冲突。如果
收到ARP回复,则认为网络中存在该IP地址的使用者。此时,PC向DHCP服务器发送DHCP错误报告,告
知服务器,出现错误。服务器发送ICMP报文来ping这个IP地址,如果能够通讯,则服务器将该IP地址从
本地地址池中删除。
交换机的转发原理
交换机收到电信号后,将电信号转换成二进制。之后,截取数据帧。先看数据帧中的源MAC地址,
之后将该地址与数据进入接口的对应关系记录在本地的MAC地址表中。MAC地址表中的每一个表项,老
化时间300S。
之后,查看目的MAC地址,将该地址与本地MAC地址表进行对比,如果存在对应表项,则按照表项
指示,进行单播数据转发。如果没有对应表项,则进行洪泛操作。
洪泛--->交换机会将数据从除了进入的接口以外的所有接口发送一遍。
交换机数据帧的传输方式
直通转发
交换设备只读取数据帧最前方的14个字节。就可以把数据发送出去。
碎片隔离
会读取数据帧的前64个字节。
存储转发
设备读取数据帧的所有内容在转发
正常的浏览器搜索,是在地址栏中输入URL信息。域名。
URL--->资源定位符DNS协议
为了减少用户的访问复杂度,将IP地址对应转换为一个个域名信息。而DNS协议是在网络上通过域
名解析出对应的IP地址的一个协议。
DNS服务使用的是UDP/TCP的53号端口传输数据。
在终端请求解析IP地址的过程中,使用的是UDP协议进行数据传输。
DNS服务在进行区域传输时,使用TCP协议进行,一般是属于服务器与服务器之间交互时。
DNS服务的查询方式
递归查询---每一次的请求发起者在发生变化。
迭代查询---每一次的请求发起者都是自身,但是每一次会从对端得到部分信息。
路由器的转发原理
路由器是基于数据包中的目的IP地址,查询本地路由表。若表中存在记录项,则无条件按照记录转
发。若没有记录,则直接丢弃该数据报文。
前提是,该报文的目的MAC地址是路由器本身。
获取未知路由信息
直连路由:路由器默认生成可用接口直连网段的路由条目
接口双UP
物理层
协议层
接口必须配置IP地址
静态路由:网络管理员手工配置的
动态路由:通过运行某种算法计算得出的
URL=协议+主机+端口+文件名+路径
域名=主机名
www.baidu.com
http://www.baidu.com:80/news/index.html
PC:192.168.1.1 目IP:192.168.2.1
跨广播域通讯--->依靠路由器转发
通广播域通讯--->依靠交换机转发实验
提交时间,周六晚8点前。
编写实验报告,在优快云上发布。内容包括:实验拓扑、实验需求、实验需求分析、实验配置内容
(每一个设备的每一步操作)、实验结果验证。
第二章,TCP协议
TCP---传输控制协议
是一种面向连接的可靠传输协议。
面向连接:指的是数据传输之前,收发双方需要先建立一条逻辑通路。
无面向连接:指的是数据可以自由传输,无需建立逻辑通路。
TCP是在不可靠的IP层之上,实现可靠的数据传输能力。数据有序、无丢失、不重复。
TCP提供全双工通信。
发送缓存
存放发送应用程序传输给发送方TCP准备发送的数据。
存放TCP已发送但是尚未收到确认的数据。
接收缓存
不按序到达的数据
按序到达,但未被应用程序接收的数据
TCP是面向字节流的。四元组:源IP、源端口、目IP、目端口。四元组是用来建立一个完整的TCP连接。
套接字:IP+端口
TCP报文段
tcp既可以运载数据,又可以用来建立连接、释放连接和应答。
TCP首部信息,最短20字节
序列号:可以理解为字节流的编号。每发送一个字节的数据,序列号+1
确认序列号:是收到的报文的序列号+收到的数据部分字节大小
确认机制:没收到一个发送方发出的数据,都需要回复一个确认报文。
1、表明接收方期望收到发送方发送的下一个字节的序号。
2、代表接收方已经收到了确认序列号之前的所有字节数据。
累计确认
数据偏移:TCP报文段的数据起始处距离TCP报文段的起始处的距离。其本质是在描述TCP首部大小。标志位:
紧急位URG:报文段中包含紧急数据,是高优先级的数据,应尽快传输,不再缓存队列中排队。
确认位ACK:当确认位置位1,则确认序列号有意义。在连接连接以后所有传输的报文段都必须把
ACK置位1。
推送位PSH:接收方应尽快将数据交付给应用程序,不再等待缓存填满再向上提交。
复位RST:表明TCP连接中出现错误,必须释放连接,然后重新建立连接
同部位SYN:表明这是一个连接请求报文
终止位FIN:表明发送方数据已完全发送,要求释放连接。
TCP可靠性
确认、重传、排序、流控。
排序机制
最大字节数由MSS控制。该参数是需要在TCP连接握手的过程中,通过前两次SYN报文段来进行参数
协商。
如果双方的MSS数值不同,则选择数值较小的作为传输标准。
MSS受到MTU的限制。
MTU:最大传输单元,指的是数据链路层在封装成帧时所允许携带的最大数据量,在以太网当中,
MTU数值为1500字节。
MSS:数据段中携带的数据字节数。
MSS===MTU-IP首部-TCP首部
紧急指针:与控制位中的URG字段共同使用,当URG=1时,紧急指针有效。
紧急数据会被TCP放置在数据部分的最前方,即从第0个字节开始,而紧急指针是为了表明紧急数据的结束
位置。
例如:紧急指针为70,则紧急数据位置为0字节到69字节。
选项字段:最大报文段长度MSS;窗口扩大银子;时间戳;选择确认机制。安全摘要选项。
分片:这个操作是由网络层的IP协议来执行。
分段:这个操作是由传输层的TCP协议来执行。
PMTU---路径MTU
在IP报头中,有一个DF字段,该字段表明了IP报文是否允许被分片,PMTU功能开启后,该字段为1,标识
不能分片。
此时当需要进行分片是,发现该报文无法分片,设备会丢弃该报文,并向发送源回复一个ICMP报文(数据
不可达),同时携带上当前设备的MTU。
发送方接收该ICMP报文后,因为TCP重传机制,会重新发送一次数据,但是会根据最新的MTU来生成新的
分段报文。通过序列号字段,保证分段的有序性。将根据序列号的大小,将乱序的报文段进行重组。
确认机制
是TCP保障可靠性的核心点。
TCP协议保证对方能够收到本端发送的数据段的方式,就是让对方回复一个确认报文段。这是确认
机制的做法。
确认报文是唯一一种不需要被确认的数据段信息。
重传机制
RTT/RTO
超时重传----当超过一定时间未收到确认报文,则触发重传机制。
超时重传的判断时间依据RTT(往返时间)参数来判断。RTO被称为超时重传时间。
RTT---指的是发送端将数据发出后,到他接收到对端反馈的确认报文之间的这段时间。
RTO取值应该略大于RTT,但是也不能太大。RTT并非是固定数值,他是动态变化的数值。
超时间隔加倍机制。当连续多次未收到确认报文,设备会认为是网络拥塞过大,将重传时间加倍,
因为如果按照原本的重传时间发送报文,很可能造成网络拥塞的加剧。
快速重传机制
在TCP中,发送方可以通过接收方的反馈,在超时时间到达前,意识到数据包丢失的现象,并进行
重传。这种情况一般出现在接收端收到一个失序报文的情况下。
快速重传机制不是因为RTO时间到达而触发,这种重传机制是以数据包为驱动的一种重传机制。
当接收方意识到自己所期望的报文段丢失,服务器不能调取失序报文,并且不能确认这些报文信
息。
因为TCP协议无法直接发送一个否认确认报文(没有办法直接发送一个数据报文段,告诉对端自己
哪个报文没有收到),所以,TCP将采用冗余ACK的方式来完成缺失报文通告。
SACK机制---选择确认机制
TCP在可选项字段中,添加了一个变量。该变量中携带的就是自己已经收到的数据信息。
TCP的确认是累积确认机制,正确接收失序的报文段是不会被接收方逐个确认的。因此,发送方在
重传的时候,需要将冗余ACK报文及之后的报文段都重新发送一遍。----导致资源浪费。
选择确认机制,不是所有运行TCP协议的设备都支持的。该机制会在TCP三次握手的前两次SYN报文
中进行协商。TCP的流量控制机制
是属于TCP的传输效率问题。
滑动窗口
TCP头部中的”窗口值“是TCP实现流控的核心参数。
窗口的大小是可以指定的,该参数的大小指的是无需等待确认应答,而可以继续发送数据包的最大
量。
窗口的大小,其实体现的就是接收缓存区的大小。
TCP要求发送方依据对方的接收窗口(rwnd)来控制数据的发送量。最初,TCP的接口窗口===接收缓
存区大小。接口窗口会随着时间的增长而动态变化。
窗口关闭
窗口的大小是接收端根据自己的缓存空间的剩余量来决定的一个动态变化的数值,那么这个剩余量
就有归0的可能性。也就代表此时接收方所有缓存空间均已占用并且没能及时处理里面的资源。
所以,当接收方反馈窗口值为0时,那其实就是在通知发送方,别再发送数据,处理不过来。该机制存在风险:接收方通过确认ACK报文来通知发送方自己的窗口大小。理论上,如果接收方将
自己的缓存里的数据清空后,将反馈一个窗口值非0的报文来通知对端,可以继续发送数据了。但是如果
这个非0的ACK报文在重传过程中丢失。----会引发风险,因为确认报文丢失不会触发重传机制。所以,客
户端依然处于窗口关闭状态,不会发送数据,在等待服务器的响应。而服务器也在等待客户端发送数
据。此时,两者进入到死锁状态。
解决方式:客户端周期性发送窗口探测报文,该报文只包含TCP首部信息。通过触发TCP确认机制,
来让服务端发送确认报文,从而告知客户端,此时的窗口大小。打破死锁现象。
窗口大小仅仅是实现了将TCP数据传输的效率提高(不需要确认);但是并没有看到所谓的流量控
制,而真正的流量控制是由窗口关闭机制实现的。
窗口扩大因子
TCP选项字段中的窗口扩大因子,可以解决首部中窗口值过小的问题。因为首部中窗口值大小仅为
16bit,最大值为65536。
窗口扩大因子占据3字节大小。取值仅为0-14。是用来将TCP的窗口的值左移的位数,使得原本的窗
口值加倍。
窗口扩大因子,只能出现在同步报文段中,否则将被忽略。
TCP的拥塞控制机制
中间链路的处理能力--->拥塞控制机制
网络中对资源需求量超过了资源的可用量的情况,被称为拥塞。
如果出现了拥塞情况。--->分组丢失。重传--->网络的拥塞情况加剧。
流量控制是为了让接收方能够来得及接收,而拥塞控制是为了降低整个网络的堵塞程度。
TCP如何判断此时网络环境出现拥塞
TCP将连接中出现的丢包行为,视为拥塞的表现。
一种是数据包确认超时。
收到来自接收方发送的三个冗余ACK报文。
TCP如何来控制数据的发送量
拥塞窗口--->跟接收窗口一样,都可以对发送的字节数大小进行限制。
发送方,发出未收到确认的报文的字节数,必须小于或等于拥塞窗口和接收窗口的最小值。
拥塞窗口的数值是依靠TCP拥塞控制算法得出。TCP是在保证能够支持的最大传输效率的情况下,来
保证没有拥塞发生。被称为自计时。--->通过收到的确认报文来增加拥塞窗口。
拥塞控制算法--->慢启动,拥塞避免,快速恢复。
慢启动--->通常在开始传输数据时,拥塞窗口会被设置的很小。一般等于一个MSS数值。即一次只能
发送一个数据报文段。
每收到一个新的ACK确认报文,就会增加一倍MSS的大小。TCP会设定一个慢启动门限来评判。评判是否要停止慢启动的机制。
当拥塞窗口<门限,继续使用慢启动算法
当拥塞窗口>门限,此时将慢启动算法切换为拥塞避免算法。
当拥塞窗口=门限,两者均可使用。
拥塞避免
在一个RTT时间线内,拥塞窗口只增加一个MSS。
拥塞避免算法,不是说直接避免拥塞,而是通过降低窗口的增大速率而使得网络不容易出现拥
塞。
快速恢复
如果网络中没有发生拥塞,那么拥塞窗口就会无时无刻的增长下去。
但是如果出现了拥塞,那么这个增长必须停止。
如何提高网络利用率
延迟确认应答机制
收到数据以后不立即返回确认报文,而是延迟一段时间。
在没有收到2*MSS的数据为止,不做确认应答。
其他情况,最大延迟0.5秒发送确认应答。
捎带应答
TCP的确认应答和回执数据可以通过一个数据包进行发送。
延迟确认机制和捎带应答一般共同使用。
假设,最开始传输数据时,慢启动门限为16
1、通过慢启动算法,逐步增加窗口大小
2、当窗口大小≥门限值,则切换为拥塞避免算法
3、当网络中出现拥塞情况后,因为确认报文超时而判断的拥塞--->被称为快重传
3.1、此时将慢启动门限值设定为上一次门限值的一半,此时为8
3.2、将窗口大小设定为1
4、此时重新启动慢启动算法,重复之前过程
5、如果拥塞是因为三次冗余ACK而判断--->快恢复
5.1、将慢启动门限值设定为上一次门限值的一半
5.2、将窗口大小设定为此时的门限值,直接开始使用拥塞避免算法进行扩大窗口TCP面向连接---连接管理
连接建立、数据传输、连接释放
TCP连接的建立
TCP建立的双方都需要知晓对方的存在
要允许双方协议参数协商
设备可以为TCP连接分配相应资源(缓存空间)
TCP规定SYN被设置为1的报文段不能携带数据,但是要消耗一个序号。
问题一:初始序列号是什么产生的?为什么是随机值,而不是固定值?
初始序列号--->ISN:初始序列号产生是通过源地址、目的地址、源端口、目的端口和一个随机因子
通过哈希算法计算得出的。后续又加入了时间因子。
出于安全性考虑,如果被知道了初始序列号,那么很容易可以构造出一个在对方窗口内的序列号。
从而伪造出TCP报文,实现TCP会话劫持。
TCP序号绕回问题。
重复序号:当序号绕回后,之前已经使用过的序号可能会再次出现,导致接收方错误的将重复的报
文段当做新的报文段处理。从而丢弃正常的报文。
延迟确认:因为延迟确认是收到一定数量的数据后才发送,而序号绕回会导致延迟确认的触发时间
延后,从而降低数据传输的效率。
解决思路:使用时间戳选项来增加序号的有效范围。
问题二:什么是时间戳?
TCP时间戳--->记录数据报文发送的时间,其中有两个字段,分别为发送方时间;回显时间。
发送方发送数据时,将本地时间记录在发送方时间中。
接收方收到数据报文后,将收到的时间戳原封不动的返回给发送方,并在其中记录自己发送报文的
时间。
发送方收到回应报文后,根据报文中的回显时间字段来判断该报文是否是正确的报文,如果是,则
根据该时间计算RTT数值,并计算RTO数值。
时间戳是双向选择,需要在TCP连接建立阶段进行协商。
问题三:是否可以使用“两次握手报文”建立连接
采用三次握手形式,不是因为两次握手无法建立连接,而是为了防止已经失效的连接请求报文突然
又传送到TCP服务端,从而导致服务端回复信息,建立连接,凭空消耗资源。
问题四:三次握手如何阻止历史连接
当客户端发送连接建立请求报文后,因为网络阻塞,导致客户端重新发送一个连接建立请求报文,
这两个报文的序列号不同(因为为初始序列号)。
当网络阻塞减小时,可能旧的报文先到达服务端,而导致服务端回复SYN+ACK报文。此时服务端处
于同步已接收状态(SYN-RCVD),但是此时对于客户端而言,服务端回复的报文是错误的报文,因为其确
认序列号与客户端将要发送的报文的序列号不匹配,则客户端发送RST报文,断开连接。
当连接断开,服务端恢复到侦听状态,此时客户端发送的第二个连接请求报文到达。之后,正常建
立TCP连接。如果是两次握手,那么服务端在收到旧的SYN报文后,会直接进入到连接已建立状态。在该状态意
味着已经可以发送数据,可能会存在数据传输。但是又因为此时的连接对于客户端而言时错误的,所以
此时服务端传输的数据客户端不会接收。
问题五:如果已经建立了连接,但是客户端突然故障,怎么办?
TCP设计了一个保活计时器。
如果客户端出现故障,服务端不能一直等待下去,因为会白白浪费资源。
服务端没收到一次客户端的请求后都会复位保活计时器,一般为2小时,当保活计时器为0时,服务
端主动发送探测报文,并每隔75秒发送一次。如果连续十次报文都没有接收到对端回复,则服务端认为
客户端出现故障,关闭连接。
问题六:如果一个TCP连接存在两个客户端,是否可以正常建立连接
四次挥手---TCP连接断开
Time-Wait状态:客户端的倒数第二个状态。
在等待2MSL时间以后,客户端切换状态,进入关闭状态。MSL是最长报文段寿命。默认建议时间为
2分
1万+

被折叠的 条评论
为什么被折叠?



