实验楼学习网络总结

IP地址

网络上每一个节点都必须有一个独立的 IP 地址,通常使用的 IP 地址是一个 32bit 的数字,被 . 分成 4 组,例如,255.255.255.255 就是一个 IP 地址

域名

用 12 位数字组成的 IP 地址很难记忆,在实际应用时,用户一般不需要记住 IP 地址,互联网给每个 IP 地址起了一个别名,习惯上称作域名

常见的域名包括 com、net 和 org 三种顶级域名后缀,除此之外每个国家还有自己国家专属的域名后缀(比如我国的域名后缀为 cn)

MAC

MAC(Media Access Control)地址,或称为物理地址、硬件地址,用来定义互联网中设备的位置。

端口号

IP 地址是用来发现和查找网络中的地址,但是不同程序如何互相通信呢?这就需要端口号来识别了。如果把 IP 地址比作一间房子 ,端口就是出入这间房子的门

 

 

网络层协议的数据单元是 IP 数据报 ,而数据链路层的工作就是把网络层交下来的 IP 数据报 封装为 (frame)发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。 为达到这一目的,数据链路必须具备一系列相应的功能,主要有:

  • 将数据封装为帧(frame),帧是数据链路层的传送单位;
  • 控制帧的传输,包括处理传输差错,调节发送速率与接收方相匹配;
  • 在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。

数据帧的结构是这样的:

流量控制

流量控制实际上是对发送方数据流量的控制,使其发送速率不超过接收方的速率。所以需要一些规则使得发送方知道在什么情况下可以接着发送下一帧,而在什么情况下必须暂停发送,以等待收到某种反馈信息后再继续发送。这就是流量控制。

MTU

为了提供足够快的响应时间,以太网和 IEEE802.3 对数据帧长度都有限制,其最大值分别为 1500 字节和 1492 字节,链路层的这个特性称作 MTU ,即 最大传输单元

当网络层传下来一个 IP 数据报,并且其长度比链路层的 MTU 大,那么网络层就需要对数据报进行分片,使每一片都小于 MTU

IP 数据报

  • 版本号 :4 位,用于标明 IP 版本号,0100 表示 IPv4,0110 表示 IPv6。目前常见的是 IPv4。
  • 首部长度 :4 位,表示 IP 报头长度,包括选项字段。
  • 服务类型(TOS) :分别有:最小时延、最大吞吐量、最高可靠性、最小花费 4 种服务,如下图所示。4 个标识位只能有一个被置为 1。
  • 总长度 :16 位,报头长度加上数据部分长度,便是数据报的总长度。IP 数据报最长可达 65535 字节。
  • 标识 :16 位,接收方根据分片中的标识字段相不相同来判断这些分片是不是同一个数据报的分片,从而进行分片的重组。通常每发送一份报文它的值就会加 1。
  • 标志 :3 位,用于标识数据报是否分片。其中的第 2 位是不分段(DF)位。当 DF 位被设置为 1 时,则不对数据报进行分段处理;第 3 位是分段(MF)位,除了最后一个分段的 MF 位被设置为 0 外,其他的分段的 MF 位均设置为 1。
  • 偏移 :13 位,在接收方进行数据报重组时用来标识分片的顺序。
  • 生存时间(TTL) :8 位,用于设置数据报可以经过的最多的路由器个数。TTL 的初始值由源主机设置(通常为 32 或 64),每经过一个处理它的路由器,TTL 值减 1。如果一个数据报的 TTL 值被减至 0,它将被丢弃。
  • 协议 :8 位,用来标识是哪个协议向 IP 传送数据。ICMP 为 1,IGMP 为 2,TCP 为 6,UDP 为 17,GRE 为 47,ESP 为 50。
  • 首部校验和 :根据 IP 首部计算的校验和码。
  • 源 IP 和目的 IP :数据报头还会包含该数据报的发送方 IP 和接收方 IP。
  • 选项 :是数据报中的一个可变长、可选的信息,不常用,多用于安全、军事等领域。

首先看到开头的 192.168.42.5.5901 > 192.168.42.2.39512 代表的是源 ip 为 192.168.42.5,端口 5901,目的 ip 为 192.168.42.2,端口 39512

然后看到 0x0000 那行:

  • 协议版本: 0x4 表示的是协议版本为 IPv4。
  • 首部长度: 0x5 ,5*4=20,表示 IP 报头长度为 20 字节。一个字节通常等于 8 位,所以这里可以知道 IP 报头为 4500 到 2a02。
  • TOS 服务类型:0x00,意味着是一般服务。
  • 总长度:0x331c,换算下来为 13084 字节。
  • 标识:0xb6ac
  • 3bit 标志 + 13bit 片偏移:0x4000
  • 生存时间:0x40,值为 64
  • 协议:0x06,代表 TCP 协议
  • 首部校验和:0x7bd7

IP 地址分类

A 类地址

  • A 类地址网络号范围:1.0.0.0---127.0.0.0
  • A 类 IP 地址范围:1.0.0.0---127.255.255.255
  • A 类 IP 的私有地址范围:10.0.0.0---10.255.255.255 (所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)
  • 127.X.X.X 是保留地址,用做循环测试用的
  • 因为主机号有 24 位,所以一个 A 类网络号可以容纳 2^24-2=16777214 个主机号

B 类地址

  • B 类地址网络号范围:128.0.0.0---191.255.0.0
  • B 类 IP 地址范围:128.0.0.0---191.255.255.255
  • B 类 IP 的私有地址范围:172.16.0.0---172.31.255.255
  • 169.254.X.X 是保留地址;191.255.255.255 是广播地址
  • 因为主机号有 16 位,所以一个 B 类网络号可以容纳 2^16-2=65534 个主机号

C 类地址

  • C 类地址网络号范围:192.0.0.0---223.255.255.0
  • C 类 IP 地址范围:192.0.0.0---223.255.255.255
  • C 类 IP 的私有地址范围:192.168.0.0---192.168.255.255
  • 因为主机号有 8 位,所以一个 C 类网络号可以容纳 2^8-2=254 个主机号

子网划分

IP 地址如果只使用 ABCDE 类来划分,会造成大量的浪费:一个有 500 台主机的网络,无法使用 C 类地址。但如果使用一个 B 类地址,6 万多个主机地址只有 500 个被使用,造成 IP 地址的大量浪费。

因此,可以在 ABC 类网络的基础上,进一步划分子网:占用主机号的前几个位,用于表示子网号

这样 IP 地址就可看作 IP = 网络号 + 子网号 + 主机号

子网号的位数没有硬性规定,于是我们用 子网掩码 来确定一个 IP 地址中哪几位是主机号,具体使用方法如图:

子网掩码中的 1 标识了 IP 地址中相应的网络号和子网号,0 标识了主机号。将 IP 地址和子网掩码进行 逻辑与运算 ,结果就能区分网络号和子网号

IP 路由选择

如果发送方与接收方直接相连(点对点)或都在一个共享网络上(以太网),那么 IP 数据报就能直接送达。 而大多数情况则是发送方与接收方通过若干个路由器(router)连接,那么数据报就需要经过若干个路由器的转发才能送达,它是怎么选择一个合适的路径来"送货"的呢?

IP 层在内存中有一个路由表(输入命令 route -n 可以查看路由表),当收到一份数据报并进行发送时,都要对该表进行搜索:

  • 1、搜索路由表,如果能找到和目的 IP 地址完全一致的主机,则将 IP 数据报发向该主机;
  • 2、搜索路由表,如果匹配主机失败,则匹配同子网的路由器(这需要子网掩码的协助)。如果找到路由器,则将该 IP 数据报发向该路由器;
  • 3、搜索路由表,如果匹配同子网路由器失败,则匹配同网络号路由器,如果找到路由器,则将该 IP 数据报发向该路由器;
  • 4、如果以上都失败了,就搜索默认路由,如果默认路由存在,则发报;
  • 6、如果都失败了,就丢掉这个包;
  • 7、接收到数据报的路由器再按照它自己的路由表继续转发,直到数据报被转发到目的主机;
  • 8、如果在转发过程中,IP 数据报的 TTL(生命周期)已经被减为 0,则该 IP 数据报就被抛弃。

 

NAT 技术

  • 当你用 ifconfig 查看 IP 地址时,有时你会发现自己的 IP 地址是这样的———192.168.X.X 或 172.16.X.X。这是 C 类网和 B 类网的私有地址,就是俗称的内网 IP。这是因为你的路由器采用了 NAT 技术。
  • NAT(Network Address Translation,网络地址转换)是 1994 年提出的。当在专用网内部的一些主机本来已经分配到了内网 IP 地址,但现在又想和因特网上的主机通信时,NAT 技术将其内网 IP 地址转换成全球 IP 地址,然后与因特网连接,也就是说,内网的数台主机使用了同一个全球 IP 地址在上网。
  • NAT 技术实现了宽带共享,而且有助于缓解 IP 地址空间枯竭的问题。

TTL

  • TTL 是 Time To Live 的缩写,该字段指定 IP 包被路由器丢弃之前允许通过的最大网段数量。可以去回顾一下上节的 IP 报文结构图。
  • TTL 是 IPv4 包头的一个 8 bit 字段,它的作用是限制 IP 数据包在计算机网络中的存在时间,即 IP 数据包在计算机网络中可以转发的最大条数。
  • 假如没有 TTL 字段,网络中的 IP 包将越来越多造成网络阻塞,TTL 避免 IP 包在网络中的无限循环和收发,节省了网络资源,并能使 IP 包的发送者能收到告警消息。

UDP 报文

UDP 数据报可分为两部分:UDP 报头和数据部分。其中数据部分是应用层交付下来的数据。UDP 报头总共 8 字节,而这 8 字节又分为 4 个字段:

  • 源端口:2 字节,在对方需要回信时可用,不需要时可以全 0;
  • 目的端口:2 字节,必须,也是最重要的字段;
  • 长度:2 字节,长度值包括报头和数据部分;
  • 校验和:2 字节,用于检验 UDP 数据报在传输过程中是否有出错,有错就丢弃。

TCP 报文

TCP 是面向字节流的,而 TCP 传输数据的单元是 报文段 。一个 TCP 报文段可分为两部分:报头和数据部分。数据部分是上层应用交付的数据,而报头则是 TCP 功能的关键。

TCP 报文段的报头有前 20 字节的固定部分,后面 4n 字节是根据需要而添加的字段。如图则是 TCP 报文段结构:

20 字节的固定部分,各字段功能说明:

  • 源端口和目的端口:各占 2 个字节,分别写入源端口号和目的端口号。这和 UDP 报头有类似之处,因为都是传输层协议。
  • 序号:占 4 字节序,序号范围[0,2^32-1],序号增加到 2^32-1 后,下个序号又回到 0。TCP 是面向字节流的,通过 TCP 传送的字节流中的每个字节都按顺序编号,而报头中的序号字段值则指的是本报文段数据的第一个字节的序号
  • 确认序号:占 4 字节,期望收到对方下个报文段的第一个数据字节的序号。
  • 数据偏移:占 4 位,指 TCP 报文段的报头长度,包括固定的 20 字节和选项字段。
  • 保留:占 6 位,保留为今后使用,目前为 0。
  • 控制位:共有 6 个控制位,说明本报文的性质,意义如下:
    • URG 紧急:当 URG=1 时,它告诉系统此报文中有紧急数据,应优先传送(比如紧急关闭),这要与紧急指针字段配合使用。
    • ACK 确认:仅当 ACK=1 时确认号字段才有效。建立 TCP 连接后,所有报文段都必须把 ACK 字段置为 1。
    • PSH 推送:若 TCP 连接的一端希望另一端立即响应,PSH 字段便可以“催促”对方,不再等到缓存区填满才发送。
    • RST复位:若 TCP 连接出现严重差错,RST 置为 1,断开 TCP 连接,再重新建立连接。
    • SYN 同步:用于建立和释放连接,稍后会详细介绍。
    • FIN 终止:用于释放连接,当 FIN=1,表明发送方已经发送完毕,要求释放 TCP 连接。
  • 窗口:占 2 个字节。窗口值是指发送者自己的接收窗口大小,因为接收缓存的空间有限。
  • 检验和:2 个字节。和 UDP 报文一样,有一个检验和,用于检查报文是否在传输过程中出差错。
  • 紧急指针:2 字节。当 URG=1 时才有效,指出本报文段紧急数据的字节数。
  • 选项:长度可变,最长可达 40 字节。具体的选项字段,需要时再做介绍。

还记得我们在 IP 网际协议抓取的报文吗?我们下面再用 tcpdump 命令试着抓取一下。

其实输出结果中还包含着 TCP 协议的报文,试着回顾一下,相信你能很快找到哪部分是 IP 协议的首部。IP 报文头紧接着的一部分就是 TCP 报文头,从 170d 开始。

源端口:0x170d,转换为十进制为 5901。

目的端口:0x9d86,即为 40326。

序号:0xba42638b,即为 3124913035,这和图中开头的 seq 是一致的。

确认序号:0x4c1ad749,即为 1276827465,这和图中开头的 ack 是一致的。

数据偏移:0x8,8*4=32B。

 

从 4500 到 0101 都是 IP 报头,IP 报文在之前已经讲过,这里就不赘述了。后面的部分就是 UDP 报文。

我们知道 UDP 报头一共 8 字节,所以从 803e 到 7f05 是 UDP 报头的部分。

  • 803e:源端口,2 字节,换成十进制也就是 32830
  • 1e61:目的端口,2 字节,十进制为 7777
  • 001c:包长度,单位为字节,换为十进制可知包长度为 28 字节
  • 7f05:校验和

TCP 可靠传输的实现

  • TCP 报文段的长度可变,根据收发双方的缓存状态、网络状态而调整。
  • 当 TCP 收到发自 TCP 连接另一端的数据,它将发送一个确认。
  • 当 TCP 发出一个报文段后,它启动一个定时器,等待目的端确认收到这个报文段,如果不能及时收到一个确认,将重发这个报文段。这就是稍后介绍的超时重传
  • TCP 将保持它首部和数据的检验和。如果通过检验和发现报文段有差错,这个报文段将被丢弃,等待超时重传。
  • TCP 将数据按字节排序,报文段中有序号,以确保顺序的正确性。
  • TCP 还能提供流量控制。TCP 连接的每一方都有收发缓存。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。

可见超时重发机制是 TCP 可靠性的关键,只要没有得到确认报文段,就重新发送数据报,直到收到对方的确认为止

 

 

超时重传

TCP 规定,接收者收到数据报文段后,需回复一个确认报文段,以告知发送者数据已经收到。而发送者如果一段时间内(超时计时器)没有收到确认报文段,便重复发送。

为了实现超时间重传,需要注意:

  • 发送者发送一个报文段后,暂时保存该报文段的副本,为发生超时重传时使用,收到确认报文后删除该报文段。
  • 确认报文段也需要序号,才能明确是发出去的哪个数据报得到了确认。
  • 超时计时器比传输往返时间略长,但具体值是不确定的,根据网络情况而变

 

连续 ARQ 协议

也许你也发现了,按上面的介绍,超时重传机制很费时间,每发送一个数据报都要等待确认。

在实际应用中的确不是这样的,真实情况是,采用了流水线传输:发送方可以连续发送多个报文段(连续发送的数据长度叫做窗口),而不必每发完一段就停下来等待确认。

实际应用中,接收方也不必对收到的每个报文都做回复,而是采用累积确认方式:接收者收到多个连续的报文段后,只回复确认最后一个报文段,表示在这之前的数据都已收到。

这样,传输效率得到了很大的提升。

 

流量控制和拥塞控制

由于接收方缓存的限制,发送窗口不能大于接收方接收窗口。在报文段首部有一个字段就叫做窗口(rwnd),这便是用于告诉对方自己的接收窗口,可见窗口的大小是可以变化的。

那么窗口的大小是如何变化的呢?TCP 对于拥塞的控制总结为“慢启动、加性增、乘性减”,如图所示:

  • 慢启动 :初始的窗口值很小,但是按指数规律渐渐增长,直到达到慢开始门限(ssthresh)
  • 加性增 :窗口值达到慢开始门限后,每发送一个报文段,窗口值增加一个单位量。
  • 乘性减 :无论什么阶段,只要出现超时,则把窗口值减小一半

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网络中心机房到实验楼的一楼的中心交换机为千兆传输,从实验楼中心交换机到各楼层交换机传输如下:到2、3、4、5楼层为光纤传输;到一楼和地下室创新基地为超五类双绞线传输。为了避免减少IP地址的冲突和广播流量,以实验室为一个单位划分为一个网络。四楼实验室内计算机数量较多,影响网络速度,把另一实验室分成两部分,划分为两个网络,四楼多媒体教室化分为一个网络,五楼多媒体教室化分为一个网络。整体上分成18个网络。其中在地下室创新基地共有13个工程项目组、1个管理室、1个学生会办公室,共有200多台计算机,每台机器都需要上网,为了保证网络的流畅,同时考虑到各个社团和专业之间学生的学习交流,及减少IP地址的冲突和广播流量,可以使用IP地址与交换机端口绑定技术为每个单元绑定一个端口和IP段。 一楼是学院老师办公的地方,基于安全性的考虑,把一楼划分为一个网络,一楼有10个房间,从楼层交换机分配给每个办公室两个端口,即每个房间有两个信息点。二楼到5楼共有16个网络(四楼10 号实验室分为两个),每个实验室有两个信息点,多媒体教室一个信息点,要求两个网络之间相互不能通信,所以在楼层交换机上以每两个端口为一个单位划分一个VLAN(虚拟局域网)。整个布线系统能够实现网络的先进性、全性、可管理性、稳定性和可拓展性等要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值