cyc——网络——计算机网络

1.概述

1.1 ISP

互联网服务提供商ISP可以从互联网管理机构获得许多IP地址,同时拥有通信线路以及路由器等联网设备,个人或机构向ISP缴纳一定的费用就可以接入互联网。
在这里插入图片描述
互联网交换中心IXP是不同电信运营商之间为连通各自网络而建立的集中交换平台。
目前互联网是一种多层次的ISP结构,ISP根据覆盖面积的大小分为第一层ISP、区域ISP和接入ISP。互联网交换点IXP允许两个ISP直接相连而不用经过第三个ISP。
在这里插入图片描述

1.2 主机之间的通信方式

  • 客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。
    在这里插入图片描述

  • 对等(P2P):不区分客户和服务器。

在这里插入图片描述

1.3 电路交换和分组交换

  • 电路交换
    电路交换用于电话通信系统,两个用户要通信之前需要建立一条专用的物理链路,并且在整个整个通信过程中始终占用该链路。由于通信的过程中不可能一直在使用传输线路,因此电路交换对线路的利用率很低,往往不到10%。

  • 分组交换
    每个分组都有首部和尾部,包含了源地址和目的地址等控制信息,在同一个传输线路上同时传输多个分组互相不会影响,因此在同一条传输线路上允许同时传输多个分组,也就是说分组交换不需要占用传输线路。
    在一个邮局通信系统中,邮局收到一份邮件之后,先存储下来,然后把相同目的地的邮件一起转发到下一个目的地,这个过程就是存储转发过程,分组交换也使用了存储转发过程。

1.4 时延

总时延=排队时延+处理时延+传输时延+传播时延
在这里插入图片描述

  • 排队时延
    分组在路由器的输入队列和输出队列中排队等待的时间,取决于网络当前的通信量。

  • 处理时延
    主机或路由器收到分组时进行处理所需要的时间,例如分析首部、从分组中提取数据、进行差错检验或查找适当的路由等。

  • 传输时延
    主机或路由传输数据帧所需要的时间。
    在这里插入图片描述
    其中l表示数据帧的长度,v表示传输速率。

  • 传播时延
    电磁波在信道中传播所需要花费的时间,电磁波传播的速度接近光速。
    在这里插入图片描述
    其中l表示信道长度,v表示电磁波在信道上的传播速度。

1.5 计算机网络体系结构

在这里插入图片描述
1.五层协议

  • 应用层:为特定应用程序提供数据传输服务,例如HTTP、DNS等协议。数据单位为报文。
  • 传输层:为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。传输层包括两种协议:传输控制协议TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP主要提供完整性服务,UDP主要提供及时性服务。
  • 网络层:为主机提供数据传输服务。而传输层协议是为主机中的进程提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组。
  • 数据链路层:网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。
  • 物理层:考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。

2.OSI(开放式系统互联)

  • 表示层:数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。
  • 会话层:建立及管理会话。

五层协议没有表示层和会话层,而是将这些功能留给应用程序开发者处理。
3.TCP/IP
TCP/IP体系结构不严格遵循OSI分层概念,应用层可能会直接使用IP层或网络接口层。
在这里插入图片描述
4.数据在各层之间的传递过程
在向下的过程中,需要添加下层协议所需要的首部或尾部,而在向上的过程中不断拆开首部和尾部。
路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也不需要传输层和应用层。

2.物理层

2.1 通信方式

根据信息在传输线上的传送方向,分为以下三种通信方式:

  • 单工通信:单向传输
  • 半双工通信:双向交替传输
  • 全双工通信:双向同时传输

2.2 带通调制

模拟信号是连续的信号,数字信号是离散的信号。带通调制把数字信号转换为模拟信号。
在这里插入图片描述

3.链路层

3.1 基本问题

  • 封装成帧

将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。
在这里插入图片描述

  • 透明传输
    透明表示一个实际存在的事物看起来好像不存在一样。
    帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相容的内容插上转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。
    在这里插入图片描述
  • 差错检测
    目前数据链路层广泛使用了循环冗余检验(CRC)来检查比特差错。

3.2 信道分类

  • 广播信道
    一对多通信,一个节点发送的数据能够被广播信道上所有的节点接收到。
    所有的节点都在同一个广播信道上发送数据,因此需要有专门的控制方法进行协调,避免发生冲突(冲突也叫碰撞)。
    主要有两种控制方法进行协调,一个是使用信道复用技术,一个是使用CSMA/CD协议。
  • 点对点信道
    一对一通信。因为不会发生碰撞,因此也比较简单,使用PPP协议进行控制。

3.3 信道复用技术

  • 频分复用
    频分复用的所有主机在相同的时间占用不同的频率带宽资源。
    在这里插入图片描述
  • 时分复用
    时分复用的所有主机在不同的时间占用相同的频率带宽资源。
    在这里插入图片描述
    使用频分复用和时分复用进行通信,在通信的过程中主机会一直占用一部分信道资源。但是由于计算机数据的突发性质,通信过程中没必要一直占用信道资源而不让出给其他用户使用,因此这两种方式对信道的利用率都不高。
  • 统计时分复用
    是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。
    在这里插入图片描述
  • 波分复用
    光的频分复用。由于光的频率很高,因此习惯用波长而不是频率来表示所使用的光载波。
  • 码分复用
    为每个用户分配m bit的码片,并且所有的码片正交,对于任意两个码片
    在这里插入图片描述

3.4 CSMA/CD协议

CSMA/CD表示载波监听多点接入、碰撞检测。

  • 多点接入:说明这是总线型网络,许多主机以多点的方式连接到总线上。
  • 载波监听:每个主机都必须不停地监听信道。在发送前,如果监听到信道正在使用,就必须等待。
  • 碰撞检测:在发送中,如果监听到信道已有其它主机正在发送数据,就表示发生了碰撞。虽然每个主机在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延,还是有可能会发生碰撞。

记端到端的传播时延为 τ,最先发送的站点最多经过2τ就可以知道是否发生了碰撞,称2τ为争用期。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用截断二进制指数退避算法来确定。从离散的整数集合{0,1,…,(2^k-1)}中随机取出一个数,记作r,然后去r倍的争用期作为重传等待时间。
在这里插入图片描述

3.5 PPP协议

互联网用户通常需要连接到某个ISP之后才能接入到互联网,PPP协议是用户计算机和ISP进行通信时所使用的数据链路层协议。
在这里插入图片描述
PPP的帧格式:

  • F字段为帧的定界符
  • A和C字段暂时没有意义
  • FCS字段是使用CRC的检验序列
  • 信息部分的长度不超过1500
    在这里插入图片描述

3.6 MAC地址

MAC地址是链路层地址,长度为6字节(48位),用于唯一标识网络适配器(网卡)。
一台主机拥有多少个网络适配器就有多少个MAC地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因此就有两个MAC地址。

3.7 局域网

局域网是一种典型的广播信道,主要特点是网络为一个单位所拥有,且地理范围和站点数目均有限。
主要有以太网、令牌环网、FDDI和ATM等局域网技术,目前以太网占领着有线局域网市场。
可以按照网络拓扑机构对局域网进行分类:
在这里插入图片描述

3.8 以太网

以太网是一种星型拓扑结构局域网。
早期使用集线器进行连接,集线器是一种物理层设备,作用于比特而不是帧,当一个比特到达接口时,集线器重新生成这个比特,并将其能量强度放大,从而扩大网络的传输距离,之后再将这个比特发送到其它所有接口。如果集线器同时收到两个不同接口的帧,那么就发生了碰撞。
目前以太网使用交换机替代了集线器,交换机是一种链路层设备,它不会发生碰撞,能根据MAC地址进行存储转发。
以太网帧格式:

  • 类型:标记上层使用的协议
  • 数据:长度在46-1500之间,如果太小则需要填充
  • FCS:帧检验序列,使用的是CRC检验方法;
    在这里插入图片描述

3.9 交换机

交换机具有自学习能力,学习的是交换表的内容,交换表中存储着MAC地址到接口的映射。
正是由于这种自学习能力,因此交换机是一种即插即用设备,不需要网络管理员手动配置交换表内容。
下图中,交换机有4个接口,主机A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。
在这里插入图片描述

3.10 虚拟局域网

虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息。
例如下图中(A1,A2,A3,A4)属于一个虚拟局域网,A1发送的广播会被A2,A3,A4收到,而其它站点收不到。
使用VLAN干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连VLAN交换机。
IEEE定义了一种扩展的以太网帧格式802.1Q,它在标准以太网帧上加进了4字节首部VLAN标签,用于表示该帧属于哪一个局域网。
在这里插入图片描述

4.网络层

4.1 概述

因为网络层是整个互联网的核心,因此应当让网络层尽可能简单。网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务。
使用IP协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。
在这里插入图片描述
与IP协议配套使用的还有三个协议:

  • 地址解析协议ARP
  • 网际控制报文协议ICMP
  • 网际组管理协议IGMP

4.2 IP数据报格式

在这里插入图片描述

  • 版本:有4(IPV4)和6(IPV6)两个值。
  • 首部长度:占4位,因此最大值是15,值为1表示的是一个32位字的长度,也就是4字节。因为固定部分长度为20字节,因此该值最小为5.如果可选字段的长度不是4字节的整数倍,就用尾部的填充部分来填充。
  • 区分服务:用来获得更好的服务,一般情况下不使用。
  • 总长度:包括首部长度和数据部分长度。
  • 生存时间:TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当TTL为0时就丢弃数据报。
  • 协议:指出携带的数据应该交给哪个协议进行处理,例如ICMP、TCP、UDP等。
  • 首部检验和:因为数据每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。
  • 标识:在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。
  • 片偏移:和标识符一起,用于发生分片的情况下。片偏移的单位为8字节。
    在这里插入图片描述

4.3 IP地址编码方式

IP地址的编址方式经历了三个历史阶段:

  • 分类
  • 子网划分
  • 无分类

1.分类
由两部分组成,网络号和主机号,其中不同分类具有不同的网络号长度,并且是固定的。
IP地址::={<网络号>,<主机号>}
在这里插入图片描述
2.子网划分
通过在主机号字段中拿一部分作为子网号,把两级IP地址划分为三级IP地址。
IP地址::={<网络号>,<子网号>,<主机号>}
要使用子网,必须配置子网掩码。一个B类地址的默认子网掩码为255.255.0.0,如果B类地址的子网占两个比特,那么子网掩码为11111111 11111111 11000000 00000000,也就是255.255.192.0.
注意,外部网络看不到子网的存在。
3.无分类
无分类编址CIDR消除了传统A类、B类和C类地址以及划分子网的概念,使用网络前缀和主机号来对IP地址进行编码,网络前缀的长度可以根据需要变化。
IP地址::={<网络前缀号>,<主机号>}
CIDR的记法上采用在IP地址后面加上网络前缀长度的方法,例如128.14.25.7/20表示前20为为网络前缀。
CIDR的地址掩码可以继续称为子网掩码,子网掩码首1长度为网络前缀的长度。
一个CIDR地址块中有很多地址,一个CIDR表示的网络就可以表示原来的很多个网络,并且在路由表中只需要一个路由就可以代替原来很多路由表项的数量。把这种通过使用网络前缀来减少路由表项的方式称为路由聚合,也成为构成超网。
在路由表中的项目由“网络前缀”和“下一跳地址”组成,在查找时可能会得到不止一个匹配结果,应当采用最长前缀匹配来确定该匹配哪一个。

4.4 地址解析协议ARP

网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP数据报的源地址和目的地址始终不变,而MAC地址随着链路的改变而改变。
在这里插入图片描述
ARP实现由IP地址得到MAC地址。
在这里插入图片描述
每个主机都有一个ARO高速缓存,里面有本局域网上各主机和路由器的IP地址到MAC地址的映射表。
如果主机A知道主机B的IP地址,但是ARO高速缓存中没有该IP地址到MAC地址的映射,此时主机A通过广播的方式发送ARP请求分组,主机B收到该请求之后,会发送ARP响应分组给主机A告知其MAC地址,随后主机A向其高速缓存中写入主机B的IP地址到MAC地址的映射。
在这里插入图片描述

4.5 网际控制报文协议ICMP

ICMP是为了更有效的转发IP数据报和提高交付成功的机会。它封装在IP数据报中,但是不属于高层协议。
在这里插入图片描述
ICMP报文分为差错报告报文和询问报文。
在这里插入图片描述
1.Ping
Ping是ICMP的一个重要应用,主要用于测试两台主机之间的连通性。
Ping的原理是通过向目的主机发送ICMP Echo请求报文,目的主机收到之后会发送Echo回答报文。Ping会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。
2.Traceroute
Traceroute是ICMP的另一个应用,用来跟踪一个分组从源点到终点的路径。
Traceroute发送的IP数据报封装的是无法交付的UDP用户数据报,并由目的主机发送终点不可达差错报告报文。

  • 源主机像目的主机发送一连串的IP数据报。第一个数据报P1的生存时间TTL设置为1,当P1到达路径上的第一个路由器R1时,R1收下它并把 TTL减1,此时TTL等于0,R1就把P1丢弃,并向源主机发送一个ICMP时间超过差错报告报文。
  • 源主机接着发送第二个数据报P2,并把TTL设置为2,。P2先到达R1,R1收下把TTL减1再转发给R2,R2收下后也把TTL减1.由于此时TTL等于0,R2就丢弃P2,并向源主机发送一个ICMP时间超过差错报文。
  • 不断执行这样的步骤,直到最后一个数据报刚刚到达目的主机,主机不转发数据,也不把TTL值减1。但是因为数据报封装的是无法交付的UDP,因此目的主句要像源主机发送ICMP终点不可达差错报告报文。
  • 之后源主机知道了到达目的主机所经过的路由器IP地址以及到达每个路由器的往返时间。

4.6 虚拟专用网VPN

由于IP地址的紧缺,一个机构能申请到的IP地址数往往远小于本机构所拥有的主机数。并且一个机构并不需要把所有的主机接入到外部的互联网中,机构内的计算机可以使用仅在本机构有效的IP地址(专用地址)。
有三个专用地址块:

  • 10.0.0.0 ~ 10.255.255.255
  • 172.16.0.0 ~ 172.255.255.255
  • 192.168.0.0 ~ 192.168.255.255

VPN使用公用的互联网作为本机构各专用网之间的通信载体。专用指机构内的主机只与本机构内的其它主机通信。
下图中,场所A和B的通信经过互联网,如果场所A的主机X要和另一个场所B的主机Y通信,IP数据报的源地址是10.0.0.1,目的地址是10.2.0.3,数据报先发送到与互联网相连的路由器R1,R1对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器R1的全球地址125.1.2.3,目的地址是路由器R2的全球地址194.4.5.6.路由器R2受到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为10.2.0.3,就交付给Y。
在这里插入图片描述

4.7 网络地址转换NAT

专用网内部的主机使用本地IP地址又想和互联网上的主机通信时,可以使用NAT来将本地IP转换为全球IP。
在以前,NAT将本地IP和全球IP一一对应,这种方式下拥有n个全球IP地址的专用网内最多只可以同时有n台主机接入互联网。为了更有效的利用全球IP地址,现在常用的NAT转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球IP地址。使用端口号的NAT也叫做网络地址与端口转换NAPT。
在这里插入图片描述

4.8 路由器的结构

路由器从功能上可以划分为:路由选择和分组转发。
分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。
在这里插入图片描述

4.9 路由器分组转发流程

  • 从数据报的首部提取目的主机的IP地址D,得到目的网络地址N。
  • 若N就是与此路由器直接相连的某个网络地址,则进行直接交付。
  • 若路由表中有目的地址为D的特定主机路由,则把数据报传送给表中指明的下一跳路由器。
  • 若路由表有到达N的路由,则把数据报传送给路由表中所指明的下一跳路由器,
  • 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器。
  • 报告转发分组出错。
    在这里插入图片描述

4.10 路由选择协议

路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。
互联网可以划分为许多较小的自治系统AS,一个AS可以使用一种和别的AS不同的路由选择协议。
可以把路由选择协议划分为两大类:

  • 自治系统内部的路由选择:RIP和OSPF
  • 自治系统间的路由选择:BGP
    1.内部网关协议RIP
    RIP是一种基于距离向量的路由选择协议。距离是指跳数,直接相连的路由器跳数为1。跳数最多为15,超过15表示不可达。
    RIP按固定的时间间隔仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。
    距离向量算法:
  • 对地址为X的相邻路由器发来的RIP报文,先修改报文中的所有项目,把下一跳字段中的地址改为X,并把所有的距离字段加1
  • 对修改后的RIP报文中的每一个项目,进行以下步骤:
  • 若原来的路由表中没有目的网络N,则把该项目添到路由表中
  • 否则,若下一跳路由器地址是X,则把收到的项目替换原来路由表中的项目,否则:若收到的项目中的距离d小于路由表中的距离,则进行更新(例如原始路由表项为Net2,5,P,新表项为Net2,4,X,则更新);否则什么也不做。
  • 若3分钟还没有收到相邻路由器的更新路由表,则把该相邻路由器标为不可达,即把距离设置为16。

RIP协议实现简单,开销小。但是RIP能使用的最大距离为15,限制了网络的规模,并且当网络出现故障时,要经过比较长的时间才能将此消息传送到所有路由器。
2.内部网关协议OSPF
开放最短路径优先OSPF,是为了克服RIP的缺点而开发出来的。
开放表示OSPF不受某一家厂商控制,而是公开发表的,最短路径优先表示使用了Dijkstra提出的最短路径算法SPF。
OSPF具有以下特点:

  • 向本自治系统中的所有路由器发送信息,这种方法是洪泛法。
  • 发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示。
  • 只有当链路状态发生变化时,路由器才会发送信息。

所有路由器都具有全网的拓扑结构图,并且是一致的。相比于RIP,OSPF的更新过程收敛的更快。
3.外部网关协议BGP
BGP(Border Gateway Pratocol,边界网关协议)
AS之间的路由选择很困难,主要是由于:

  • 互联网规模很大
  • 各个AS内部使用不同的路由选择协议,无法准确定义路径的度量
  • AS之间的路由选择必须考虑有关的策略,比如有些AS不愿意让其它AS经过。

BGP只能寻找一条比较好的路由,而不是最佳路由。
每个AS都必须配置BGP发言人,通过在两个相邻BGP发言人之间建立TCP连接来交换路由信息。
在这里插入图片描述

5.传输层

网络层只把分组发送到目的主机,但是真正进行通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。

5.1 UDP和TCP的特点

  • 用户数据报协议UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞机制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加UDP首部),支持一对一、一对多、多对一和多对多的交互通信。
  • 传输控制协议TCP(Tranmission Control Protocol)是面向连接的,提交可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条TCP连接只能是点对点的(一对一)。

5.2 UDP首部格式

在这里插入图片描述
首部字段只有8个字节,包括源端口、目的端口、长度、检验和。12字节的伪首部是为了计算检验和临时添加的。

5.3 TCP首部格式

在这里插入图片描述

  • 序号(seq):用于对字节流进行编号,例如序号为301,表示第一个字节的编号为301,如果携带的数据长度为100字节,那么下一个报文段的序号应为401.
  • 确认号(ack):期望收到的下一个报文段的序号。例如B正确收到A发送来的一个报文段,序号为501,携带的数据长度为200字节,因此B期望下一个报文段的序号为701,B发送给A的确认报文段中确认号就为701。
  • 数据偏移:指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。
  • 确认ACK:当ACK=1时确认号字段有效,否则无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。
  • 同步SYN:在连接建立时用来同步序号。当SYN=1,ACK=0时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中SYN=1,ACK=1。
  • 终止FIN:用来释放一个连接,当FIN=1时,表示此报文段的发送方的数据已发送完毕,并要求释放连接。
  • 窗口:窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。

5.4 TCP的三次握手

在这里插入图片描述
假设A为客户端,B为服务器端。

  • 首先B处于LISTEN(监听)状态,等待客户的连接请求。
  • A向B发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号x。
  • B收到连接请求报文,如果同意建立连接,则向A发送连接确认报文,SYN=1,ACK=1,确认号为x+1,同时也选择一个出事的序号y。
  • A收到B的连接确认报文后,还要向B发出确认,确认号为y+1,序号为x+1。
  • B收到A的确认后,连接建立。

三次握手的原因
第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。
客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。

5.5 TCP的四次挥手

在这里插入图片描述
ACK在连接建立后都为1:

  • A发送连接释放报文,FIN=1。
  • B收到之后发出确认,此时TCP属于半关闭状态,B能向A发送数据但是A不能向B发送数据。
  • 当B不再需要连接时,发送连接释放报文,FIN=1。
  • A收到后发出确认,进入TIME-WAIT状态,等待2MSL(最大报文存活时间)后释放连接。
  • B收到A的确认后释放连接。

四次挥手的原因
客户端发送了FIN连接释放报文之后,服务器收到了这个报文,就进入了CLOSE_WAIT状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送FIN连接释放报文。
TIME_WAIT
客户端接收到服务器端的FIN报文之后,进入了此状态,此时并不是直接进入CLOSED状态,还需要等待一个时间计时器设置的时间2MSL。这么做有两个理由:

  • 确保最后一个确认报文能够到达。如果B没收到A发送来的确认报文,那么就会重新发送连接释放请求报文,A等待一段时间就是为了处理这种情况的发生。
  • 等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。

5.6 TCP可靠传输

TCP使用超时重传来实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段。
一个报文段从发送再到接收到确认所经过的时间称为往返时间RTT,加权平均往返时间RTTs计算如下:
在这里插入图片描述
其中,0 ≤ a < 1,RTTs 随着 a 的增加更容易受到 RTT 的影响。
超时时间RTO应该略大于RTTs,TCP使用的超时时间计算如下:
在这里插入图片描述
其中 RTTd 为偏差的加权平均值。

5.7 TCP滑动窗口

窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过TCP报文段中的窗口字段告诉发送方自己的窗口大小,发送方根据这个值和其它信息设置自己的窗口大小。
发送窗口内的字节都允许被发送,接受窗口内的字节都允许被接收。如果发送窗口左部的字节已经发送并且收到了确认,那么就将发送窗口向右滑动一定距离,知道左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向右滑动接收窗口。
接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31}按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。
在这里插入图片描述

5.8 TCP流量控制

流量控制是为了控制发送方发送速率,保证接收方来得及接收。
接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为0,则发送方不能发送数据。

5.9 TCP拥塞机制

如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同,流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度。
在这里插入图片描述
TCP主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。
发送方需要维护一个叫做拥塞窗口(cwnd)的状态变量,注意拥塞窗口与发送方窗口的区别:拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。
为了便于讨论,做如下假设:

  • 接收方有足够大的接受缓存,因此不会发生流量控制
  • 虽然TCP的窗口基于字节,但是这里设窗口的大小单位为报文段。

在这里插入图片描述
1.慢开始与拥塞避免
发送的最初执行慢开始,令cwnd=1,发送方只能发送1个报文段;当收到确认后,将cnwd加倍,因此之后发送方能够发送的报文段数量为:2、4、8…
注意到慢开始每个轮次都将cwnd加倍,这样会让cwnd增长速度非常快,从而使得发送方发送的速度增长速度过快,网络拥塞的可能性也就更高。设置一个慢开始门限ssthresh,当cwnd>=ssthresh时,进入拥塞避免,每个轮次只将cwnd加1.
如果出现了超时,则令ssthresh=cwnd/2,然后重新执行慢开始。
2.快重传与快恢复
在接收方,要求每次接收到报文段都应该对最后一个已收到的有序报文段进行确认,例如已经接收到M1和M2,此时收到M4,应当发送对M2的确认。
在发送方,如果收到三个重复确认,那么可以知道下一个报文段丢失,此时执行快重传,立即重传下一个报文段,例如收到三个M2,则M3丢失,立即重传M3。
在这种情况下,只是丢失个别报文段,而不是网络拥塞。因此执行快恢复,令ssthresh=cwnd/2,cwnd=ssthresh,注意到此时直接进入拥塞避免。
慢开始和快恢复指的是cwnd的设定值,而不是cwnd的增长速率。慢开始cwnd设定为1,而快恢复cwnd设定为ssthresh。
在这里插入图片描述

6.应用层

6.1 域名系统

DNS是一个分布式数据库,提供了主机名和IP地址之间相互转换的服务。这里的分布式数据库是指,每个站点只保留它自己的那部分数据。
域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名。
在这里插入图片描述
DNS可以使用UDP或者TCP进行传输,使用的端口号都为53,。大多数情况下DNS使用UDP进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。在两种情况下会使用TCP进行传输:

  • 如果返回的响应超过521字节(UDP最大只支持512字节的数据)
  • 区域传送(区域传送是主域名服务器向辅助域名服务器传送变化的那部分数据)

6.2 文件传送协议

FTP使用TCP进行连接,它需要两个连接来传送一个文件:

  • 控制连接:服务器打开端口号21等待客户端的连接,客户端主动建立连接后,使用这个连接将客户端的命令传送给服务器,并传回服务器的应答。
  • 数据连接:用来传送一个文件数据。

根据数据是否是服务器端主动建立,FTP有主动和被动两种模式:

  • 主动模式:服务器端主动建立数据连接,其中服务器端的端口号为20,客户端的端口号随机,但是必须大于1024,因为0~1023是熟知端口号。
    在这里插入图片描述
  • 被动模式:客户端主动建立数据连接,其中客户端的端口号由客户端自己指定,服务器端的端口号随机。

在这里插入图片描述
主动模式要求客户端开放端口号给服务器端,需要去配置客户端的防火墙。被动模式只需要服务器端开放端口号即可,无需客户端配置防火墙。但是被动模式会导致服务器端的安全性减弱,因为开放了过多的端口号。

6.3 动态主机配置协议

DHCP(Dynamic Host Configuration Protocol)提供了即插即用的联网方式,用户不再需要手动配置IP地址等信息。
DHCP配置的内容不仅是IP地址,还包括子网掩码、网关IP地址。
DHCP工作过程如下:

  • 客户端发送Discover报文,该报文的目的地址为255.255.255.255:67,源地址为0.0.0.0:68,被放入UDP中,该报文被广播到同一个子网的所有主机上。如果客户端和DHCP服务器不在同一个子网,就需要使用中继代理。
  • DHCP服务器收到Discover报文之后,发送Offer报文给客户端,该报文包含了客户端,该报文包含了客户端所需要的信息。因此客户端可能收到多个DHCP服务器提供的信息,因此客户端需要进行选择。
  • 如果客户端选择了某个DHCP服务器提供的信息,那么就发送Request报文给该DHCP服务器。
  • DHCP服务器发送Ack报文,表示客户端可以使用提供给它的信息。

在这里插入图片描述

6.4 远程登录协议

TELNET用于登录到远程主机上,并且远程主机上的输出也会返回。
TELNET可以适应许多计算机和操作系统的差异,例如不同操作系统的换行符定义。

6.5 电子邮件协议

一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件协议。
邮件协议包含发送协议和读取协议,发送协议常用SMTP,读取协议常用PO3和IMAP。
在这里插入图片描述
1.SMTP
SMTP只能发送ASCII码,而互联网邮件扩充MIME可以发送二进制文件。MIME并没有改动或者取代SMTP,而是增加邮件主体的结构,定义了非ASCII码的编码规则。
在这里插入图片描述
2.POP3
POP3的特点是只要用户从服务器上读取了邮件,就把该邮件删除。
3.IMAP
IMAP协议中客户端和服务器上的邮件保持同步,如果不手动删除邮件,那么服务器上的邮件也不会被删除,IMAP这种做法可以让用户随时随地去访问服务器上的邮件。

6.6 常用端口

在这里插入图片描述

6.7 Web页面请求过程

1.DHCP配置主机信息

  • 假设主机最开始没有IP地址以及其它信息,那么就需要先使用DHCP来获取。
  • 主机生成一个DHCP请求报文,并将这个报文放入具有目的端口67和源端口68的UDP报文段中。
  • 该报文段则被放入在一个具有广播IP目的地址(255.255.255.255)和源IP地址(0.0.0.0)的IP数据报中。
  • 该数据报则被放置在MAV帧中,该帧具有目的地址FF:FF:FF:FF:FF:FF,将广播到与交换机连接到的所有设备。
  • 连接在交换机的DHCP服务器收到广播帧之后,不断地向上分解得到IP数据报、UDP报文段、DHCP请求报文,之后生成DHCP ACK报文,该报文包含以下信息:IP地址、DNS服务器的IP地址、默认网关路由器的IP地址和子网掩码。该报文被放入UDP报文段中,UDP报文段又被放入IP数据报中,最后放入MAC帧中。
  • 该帧的目的地址是请求主机的MAC地址,因为交换机具有自学习能力,之前主机发送了广播帧之后就记录了MAC地址到其转发接口的交换表项,因此现在交换机就可以直接知道应该像哪个接口发送该帧。
  • 主机收到该帧后,不断分解得到DHCP报文,之后就配置它的IP地址、子网掩码和DNS服务器的IP地址,并在其IP转发表中安装默认网关。

2.ARP解析MAC地址

  • 主机通过浏览器生成一个TCP套接字,套接字向HTTP服务器发送HTTP请求,为了生成该套接字,主机需要知道网站的域名对应的IP地址。
  • 主机生成一个DNS查询报文,该报文具有53号端口,因为DNS服务器的端口号死53。
  • 该DNS查询报文被放入目的地址为DNS服务器IP地址的IP数据报。
  • 该IP数据报被放入一个以太网帧中,该帧将发送到网关服务器。
  • DHCP过程只知道网管路由器的IP地址,为了获取网关路由器的MAC地址,需要ARP协议。
  • 主机生成一个包含目的地址为网关路由器IP地址的ARP查询报文,将该ARP查询报文放入一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧转发给所有的连接设备,包括网关路由器。
  • 网关路由器接收到该帧后,不断向上分解得到ARP报文,发现其中的IP地址与其接口的IP地址匹配,因此就发送一个ARP回答报文,包含了它的MAC地址,发回给主机。

3.DNS解析域名

  • 知道了网关路由器的MAC地址之后,就可以继续DNS的解析过程了。
  • 网关路由器接收到包含DNS查询报文的以太网帧后,抽取出IP数据报,并根据转发表决定应该转发的路由器。
  • 因为路由器具有内部网关协议(RIP、OSPF)和外部网关协议(BGP)这两种路由选择协议,因此路由表中已经配置了网关路由器到达DNS服务器的路由表项。
  • 到达DNS服务器之后,DNS服务器抽取出DNS查询报文,并在DNS数据库中查找待解析的域名。
  • 找到DNS记录之后,发送DNS回答报文,将该回答报文放入UDP报文段中,然后放入IP数据报中,通过路由器反向转发回网关路由器,并经过以太网交换机到达主机。

4.HTTP请求页面

  • 有了HTTP服务器的IP地址之后,主机就能够生成TCP套接字,该套接字将用于向Web服务器发送HTTP GET报文。
  • 在生成TCP套接字之前,必须先与HTTP服务器进行三次握手来建立连接。生成一个具有目的端口80的TCP SYN报文段,并向HTTP服务器发送该报文段。
  • HTTP服务器收到该报文段之后,生成TCP SYN ACK报文段,发回给主机。
  • 连接建立后,浏览器生成HTTP GET报文,并交付给HTTP服务器。
  • HTTP服务器从TCP套接字读取HTTP GET报文,生成一个HTTP响应报文,将Web页面内容放入报文主体中,发回给主机。
  • 浏览器收到HTTP响应报文后,抽取出Web页面内容,之后进行渲染,显示Web页面。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值