网络层重点协议
IP协议
协议头格式如下:
- 4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4。IPv6就是6.
- 4位头部长度(header length):描述了IP报头多长。(IP报头是变长的)报头中有一个选项部分 是变长的。是可有可无的。 此处的单位也是四字节。
- 8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留
字段(必须置为0)。4位表示IP协议的四种形态/四种工作模式。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。 - 16位总长度(total length):描述了一个IP数据包的长度(头+载荷)这个长度减去前面的IP报头长度就是载荷长度。一个完整的TCP/udp数据报长度。
如果一个IP数据报携带的数据载荷太长了,超过64kb,就会在网络层针对数据进行拆分。把一个数据拆分成多个IP数据报。再分别发送给接收方,再重新拼装。
接收方:数据链路层,针对两个数据帧进行分用,得到两个IP数据报,交给网络层,网络层针对这俩IP数据报进行解析,把里面的载荷拼成一个,交给传输层。
- 16位标识(id):唯一的标识主机发送的报文。同一个数据拆成的多个包的标识是一样的。
- 3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第
二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表
示"更多分片",如果分片了的话,最后一个分片置为1,其他是0。类似于一个结束标记。 - 13位分片偏移(framegament offset):标识了多个包的先后顺序。是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
- 8位生存时间(Time To Live,TTL):一个数据在网络上能够传输的最大时间。 这个时间的单位不是“秒”,而是“次数”。一个数据报构造出来,会有一个初识的TTL数值(比如32/64/128…)这个报每次经过一个路由器转发TTL-1. 如果一直减到0,还没有到达目标,此时就认为这个包永远也到不了。可以丢弃了。
- 8位协议:描述了当前载荷部分内容是属于哪个协议的。(TCP/UDP)
- 16位头部校验和:此处只需要针对首部进行校验,载荷部分(TCP/UDP数据报)自身已经有校验和了。如果校验和不一致 直接丢弃即可。
-
32位源地址和32位目标地址:此处看到的IP地址是32位的整数。而我们日常见到的
161.185.187.142
是采用点分十进制表示的。(使用三个.
把32位 4个字节的数字给分割开,分成四部分,每个部分分别使用0-255
十进制整数表示。)
所谓地址,期望每个设备都不相同。但是 随着时代的发展,32位数字,只能表示42亿九千万个数字,即IP地址不够用。为了解决这个问题,有很多方法:
-
动态分配IP地址。
-
NAT网络地址转换。本质上就是使用一个IP代表一批设备。
在NAT背景下 将IP地址分为两个大类:
(1)内网IP(私有IP)10.*
,172.16.*-172.31.*
,192.168.*
(2)外网IP(公网IP)剩下的就是公网IPNAT要求,公网IP必须是唯一的,私网IP可以在不同局域网中重复出现。
如果某个私网里的设备想访问公网的设备,就需要对应的NAT设备(路由器),把IP地址进行映射,从而完成网络访问。
反之,公网的设备,无法直接访问私网的设备。不同局域网的私网的设备没法直接相互访问。
内网IP只要在局域网内部不重复即可,不同局域网中则是可以重复的。
NAT机制能够有效的解决IP地址不够用的问题 但是使得网络环境更加复杂了。 -
IPv6:从根本上解决了IP不够用的问题。使用16字节表示IP地址。
当前世界上 仍然是以NAT+Ipv4+动态分配来进行网络组建的。
地址管理
IP地址分为两个部分,网络号和主机号
网络号:标识网段,保证相互连接的两个网段具有不同的标识;
主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;
即通常情况下:IP 192.168.0.10
中:192.168.0
为网络号10
为主机号。
一个IP地址从哪到哪是网络号,从哪到哪是主机号,是由子网掩码来确定的。
1的部分就描述了IP有多少位是网络号。
路由选择
路由选择就是规划路径 相当于使用地图导航。
由于真实的网络环境非常复杂,任何一个节点(路由器)都是无法感知到网络环境的全貌的。一个路由器最多只认识他的一些邻居。如果要进行一个比较长的路径的转发,就比较麻烦。
数据链路层重点协议
考虑相邻节点之间的传输。(通过网线/光纤/无限直接相连的两个设备)
以太网协议
以太网帧格式:
以太网数据帧 = 帧头+载荷+帧尾
帧头:含有目的地址(mac地址(物理地址)),源地址, 类型。
载荷:完整的IP数据报。
IP和mac是如何相互配合的?
IP用来描述整个传输过程的起点终点,mac则是用来表述两个相邻节点的起点和终点。
这是数据链路层中另外的协议:ARP协议。
通过这个协议,让某个路由器/交换机,能够认识局域网中的其他设备。通过ARP协议会在交换机/路由器中建立一个表。这个表相当于一个hash表,能够建立出IP和mac之间的映射关系。
MTU
MTU是一个数据链路层的数据帧,它表示了能够承载数据的最大长度。(载荷的长度)
载荷具体多长,和使用的物理介质有很大关系。当然也和数据链路层使用的协议有很大的关系。比如以太网协议 MTU1500字节。
正式因为MTU引起了IP这个协议来进行分包组包。
IP的分包组包通常不是根据这个IP最大长度来分的。大概率情况下,数据链路层的MTU比64kb要小。
应用层重要协议
DNS(域名解析系统)
其实网络上的服务器,要访问它,需要的是, IP地址。但是IP地址太拗口,于是使用一些简单的单词构成字符串来表示这个地址。每个域名都对应了一个/N个IP地址。既然如此,就需要能够把域名和IP地址给对应上。
在早期的时候, 互联网上的服务器很少, 这域名和IP这样的映射关系只是使用一个hosts文件来维护, 每个用户只需要手动自己的hosts文件就可以了, 现在的电脑还是有这个文件的, 也可以使用.
后来互联网蓬勃发展, 到现在每天都有很多新的网站诞生, 此时想要依靠手机维护已经不现实了, 于是现在就有了DNS服务器来维护域名和IP的映射关系, 当你想要访问某个域名时, 就会自动请求DNS服务器, 然后就会返回具体IP地址进行访问.
如果电脑的DNS服务器配置不对, 或者是DNS服务器挂了, 就会出现一个典型的情况: 网络正常的情况下, QQ等应用程序可以用, 但是网页打不开了.
我们自己电脑的DNS服务器可以通过如下方式配置,文章来源:https://www.toymoban.com/news/detail-517020.html
首先打开设置中 “网络和Internet” 中的 “高级网络设置” , 点击 “更多网络适配器器选项”.
这里可以自己去配置DNS服务器的地址。文章来源地址https://www.toymoban.com/news/detail-517020.html
到了这里,关于【JavaEE初阶】TCP/IP协议(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!