计算机网络【IP协议与以太网】

简介: 计算机网络【IP协议与以太网】

🍎一.IP协议


🍒1.1IPv4协议格式


5463e348d6d341d3897a93365ebd9e65.png


●4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4

●4位头部长度(header length):IP头部的长度是多少个32bit,也就是 length * 4 的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节

●8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要

●16位总长度(total length):IP数据报整体占多少个字节

●16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的

●3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示"更多分片",如果分片了的话,最后一个分片置为1,其他是0。类似于一个结束标记

●13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)

●8位生存时间(Time To Live,TTL):数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由,TTL -= 1,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环

●8位协议:表示上层协议的类型(类似于TCP,UDP)

●16位头部校验和:使用CRC进行校验,来鉴别头部是否损坏

●32位源地址和32位目标地址:表示发送端和接收端

●选项字段(不定长,最多40字节):略


如果整个IP协议数据太长超过了64k的大小,IP协议就会将数据分成多分进行传输(大小不超过64k),通过标识来标识判断来这个是那一份的IP协议里的数据报,通过片偏移来判断在这个IP报文里是那个层(进行排序),通过标志位来辨别出是否后面还有没有有需要传输的分层数据,如果是0就代表还有,如果是1就代表这个分层数据就已经传输完毕了

6627bbca617f40169f58b1ec8590508c.png


f63f2a4953244164be3a18eeb7997b9f.png


🍒1.2 IP协议地址


IP地址是一个点分十进制构成的数据

IP地址分成两个部分分别是,网络号+主机号


39c60c8e6d3a48119eff74ee532e8fe0.png

上面说了那么多有关IP协议格式,但IP地址究竟是什么呢?对于IPv4,IP地址本质上就是一串32位的序号而已,以点分十进制的方式呈现出来,即平均将这32位平分为4份,每份8位,使用.分割,每份数据的范围为0-255,比如192.168.31.70就是一个IP地址。


IP地址分为两个部分,即网络号+主机号,网络号能够描述当前的网段信息(局域网标识),主机号区分了局域网中的主机。


要求在同一个局域网内,网络号必须相同,主机号不能相同,两个相邻的局域网(同一台路由器连接),网络号是不同的。


比如上面的192.168.31.70,192.168.31表示网络号,70表示主机号。但是网络号的位数与主机号的位数是固定的吗?当然不是,在计算机网络,有一个专有名词叫做子网掩码 ,它也是一个32位的数,对应IP地址的每一位,如果为1就表示这一位是网络号,为0就表示主机号,子网掩码不会混着排列,左边为1表示网络号,右边为0表示主机号。


打开电脑的命令行,输入ipconfig,就能获取到本机的IP地址:


6989c2af11eb4eebb3434345b45dc707.png


●网络号:描述当前的网段信息(局域网的标识)

●主机号:用来区分局域网的主机


为什么这样设计,是因为在同一个局域网会采用同一个网络号,所以要辨别出 不用设备对别的设备进行访问,我们就需要来辨别出具体是那个设备进行的访问

同理不在同一个路由器里网络号也是不相同的,这就是我们之前学过的LAN口(局域网)与WAN口(广域网)


f1f3aa571d414992b406512dc9197f0e.png


🍒1.3IPv4协议的解决方案


当前我们使用的IP协议是IPv4协议(32位),也就是说我们可以使用链接的设备为42亿9千万,随着我们世界当今的飞速发张意味着终会有一天42亿9千万就不会满足我们来使用,所以我们应该怎样来解决未来将要面都的问题呢?


●动态分配IP地址:就是让每个设备链接到网络的时候,才会有IP,不联网的时候就没有IP,但是这个方案不能从根本上来解决


●.NAT机制:让多个设备公用一个IP,就像我们上面画的图演示时一样的,我们将内网(局域网)与外网(广域网)进行了区分,也就是只有在使用外网的时候才会占有IP地址,这个时候就有可能会带有成千上万个设备,这样就能解决IP数量不够的问题

NAT机制虽然将IP分成了外网和内网,但是也隐含了一个重要的结论:对于一个外网,可以在互联网任意一个位置来进行访问,但是对于一个内网,只能在当时局域网内部访问,局域网1不能访问局域网2的设备,所以就像QQ一样,QQ是带有外网的IP,我通过我的手机来访问QQ,你也通过QQ来访问QQ,我们来进行短息的交流,这样我们其实最终还是需要用到外网才可以进行访问,所以NAT机制也是有极限的,它的极限就是源端口号


●IPv6:IPv6是由16个字节来构成的比IPv4多了12个字节,IPv6可以带有2*128次幂的IP,也就是可以说将我们全球的沙子赋予他们属于自己的IP,之所IPv6没有在当前世界流行,是因为IPv4与IPv6是不兼容的!


🍒1.4路由选择(了解)


路由选择就是规划路径->问路

两个设备之间,要想找到一条通路能够完成传输的过程,找到的前提就是得先认识路


什么叫做路由器"认识"这个IP地址?

在路由器里有一个数据结构->路由表,路由表就在里面记录的一些网段信息~~(网络号),也就是我们从源IP到目的IP中就是要通过每个网络号对应的网络接口来找到目的IP地址


🍎二.以太网协议


🍒2.1以太网协议格式


数据经过网络层的封装后,会进入数据链路层进一步封装,数据链路层最常用的协议就是“以太网”,协议格式如下:

3c98f62eef344cf58ea79e4ae7c48346.png



●目的地址,源地址(6字节):数据链路层的地址是MAC地址,表示物理层地址,每一个设备只有一个物理层地址,这在硬件出厂时就已经写死的(大部分),它的地址长度比IPv4长了6w多倍,如80-30-49-26-8E-D9就是一个物理地址,在命令行输入ipconfig /all就能够查看自己设备的物理地址


●帧尾(4字节):帧尾的功能一般是校验,它是一个叫做FCS(Frame Check Sequence,帧检验序列)或CRC算法实现的校验和


以太网数据帧的最大数据载荷称为MTU,这个范围一般取决于硬件设备,不同硬件设备的MTU也不同。数据链路层考虑的是相邻设备,或者说是直接连接设备的数据传输,考虑到这个细节的时候,就需要关注传输的硬件设备,不同的硬件,搭载的数据量也不同


除了MTU还有一个类似的概念,那就是MSS,表示在不分包的情况下,除去IP与TCP首部能够搭载的最大容量


d4ecae7cdb1148c382ee04db716ed445.png

ARP报文,并不是用来传输数据的,而是一个辅助信息,就是将IP地址与MAC地址一一对应起来,建立成一个类似哈希表的映射关系,MAC地址每传输一次都会发生改变。当设备启动的时候,就会在所处的局域网发起一个广播,获取局域网内设备的IP与MAC地址,根据各个设备响应的信息就能建立一个IP与MAC对应的映射表


🍒2.2认识MTU(了解)


MTU相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层,产生的限制


●以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;

●最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU

●如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation)

●不同的数据链路层标准的MTU是不同的


MTU对IP协议的影响

由于数据链路层MTU的限制,对于较大的IP数据包要进行分包

●将较大的IP包分成多个小包,并给每个小包打上标签

●每个小包IP协议头的 16位标识(id) 都是相同的

●每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位来表示结束标记(当前是否是最后一个小包,是的话置为1,否则置为0)

●到达对端时再将这些小包,会按顺序重组,拼装到一起返回给传输层

●一旦这些小包中任意一个小包丢失,接收端的重组就会失败。但是IP层不会负责重新传输数据


🍎三.DNS协议(应用层)


对于我们人类来书说,IP地址并不好记,为了方便人类的记忆,就将IP地址用一个域名(比如www.baidu.com)来指代,而DNS能够将IP与域名对应起来,形成映射关系


DNS最开始的时候就是一个hosts文件,不过随着发展,现在就有一个机构专门在服务器上维护hosts文件,如果你需要域名解析,就可以访问它们的网站获取

cf135b4551f840ceb298f75564b0ad61.png


我们可以将文件拖到记事本来查看一些信息,例如IP地址


a883b03f2b3843bcbf277028a265117e.png


当然,就一个根服务器是满足不了全球用户的访问的,于是运营商就就近架设了镜像的服务器,镜像服务器会定时同步根服务器上的数据

相关文章
|
负载均衡 网络协议 网络性能优化
动态IP代理技术详解及网络性能优化
动态IP代理技术通过灵活更换IP地址,广泛应用于数据采集、网络安全测试等领域。本文详细解析其工作原理,涵盖HTTP、SOCKS代理及代理池的实现方法,并提供代码示例。同时探讨配置动态代理IP后如何通过智能调度、负载均衡、优化协议选择等方式提升网络性能,确保高效稳定的网络访问。
2112 2
|
网络协议 Linux 虚拟化
配置VM网络:如何设定静态IP以访问主机IP和互联网
以上就是设定虚拟机网络和静态IP地址的基本步骤。需要注意的是,这些步骤可能会因为虚拟机软件、操作系统以及网络环境的不同而有所差异。在进行设定时,应根据具体情况进行调整。
891 10
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
1219 113
|
监控 安全 Go
使用Go语言构建网络IP层安全防护
在Go语言中构建网络IP层安全防护是一项需求明确的任务,考虑到高性能、并发和跨平台的优势,Go是构建此类安全系统的合适选择。通过紧密遵循上述步骤并结合最佳实践,可以构建一个强大的网络防护系统,以保障数字环境的安全完整。
365 12
|
监控 安全 网络安全
网络安全新姿势:多IP配置的五大好处
服务器配置多IP地址,既能提升网络速度与安全性,又能实现多站点托管和故障转移。本文详解多IP的五大妙用、配置方法及进阶技巧。从理论到实践,合理规划IP资源,让服务器性能跃升新高度。
495 2
|
域名解析 API PHP
VM虚拟机全版本网盘+免费本地网络穿透端口映射实时同步动态家庭IP教程
本文介绍了如何通过网络穿透技术让公网直接访问家庭电脑,充分发挥本地硬件性能。相比第三方服务受限于转发带宽,此方法利用自家宽带实现更高效率。文章详细讲解了端口映射教程,包括不同网络环境(仅光猫、光猫+路由器)下的设置步骤,并提供实时同步动态IP的两种方案:自建服务器或使用三方API接口。最后附上VM虚拟机全版本下载链接,便于用户在穿透后将服务运行于虚拟环境中,提升安全性与适用性。
1407 7
|
安全 网络安全 UED
为何长效代理静态IP是网络管理的关键要素
在信息化时代,静态长效IP代理对网络管理至关重要。它能提升网络服务质量,确保远程办公、视频会议等应用的稳定性和连续性;减少延迟和网络拥堵,加快数据传输;提高网络安全,便于设置访问权限,防止未授权访问。91HTTP高质量代理IP服务商助力高效信息获取。
446 23
|
域名解析 网络协议 关系型数据库
【网络原理】——带你认识IP~(长文~实在不知道取啥标题了)
IP协议详解,IP协议管理地址(NAT机制),IP地址分类、组成、特殊IP地址,MAC地址,数据帧格式,DNS域名解析系统