带你一文搞懂网络层的IP协议\数据链路层的以太网\ARP协议以及DNS和NAT协议

TCP连接管理中的保活机制:

TCP协议是面向连接通信,若通信双方长时间没有数据往来,就需要确定对方还是否在线,连接是否正常?

       若通信双方长时间(7200秒)没有数据往来,在服务端会向客户端每隔一段时间(75秒)发送一个保活探测数据包,要求对方进行响应,若多次(9次)无响应,则认为连接断开.(时间都是可以配置的),连接断开对上层程序编写的影响:recv返回0/send触发异常

网络层/链路层协议的解析:

网络层:IP协议

V--4位版本:IPV4/IPV6

L-4位头部长度:IP报头也是不定长的,最长60字节,最小20字节,有40字节的选项数据;以4字节为单位.

8位TOS字段:3位优先权弃用,4位服务类型(最小延时,最大吞吐量,最高可靠性,最小成本),1位保留

16位数据报大小:包含IP报头在内的一个IP报文的大小,最大65535-意味着一个IP报文的最大长度不能超过64K.影响:TCP在传输层选择合适大小MSS数据发送,UDP保温数据最大大小小于64K-20-8

16位分片标识:UDP数据在网络层有可能进行数据分片,标识当前分片属于哪个完整报文.

3位分片标志:1位保留,1位禁止分片标志--是否禁止分片;1位更多分片标志--类似于结尾标志

13位分片偏移:以8个字节为单位,标识当前分片在完整报文中的位置(相对起始位置偏移量)

8位TTL:报文最大生存周期--一个数据经过多少路由,经过一个路由就会-1,为0的时候则将数据丢弃(防止路由环路)

8位上层协议:数据分用时,网络层取出数据,需要通过这个协议类型,决定传输层使用哪个协议对数据分用解析

16位校验和:校验数据一致性

32位源IP地址/32位目的IP地址:负责描述数据从哪个主机来到哪个主机去--描述起点到终点

40字节选项数据:例如保留经过的路由器地址信息

网络层的数据分片:若传输层交付下来的数据大小过大,会在网络层将这个大数据截断为多个小数据分片,然后每个分片封装IP报头进行发送,到达对端之后分片重组,组合成为完整的一个报文交付给上层.

传输层交付下来的数据过大,到底是多大就会分片?---取决于链路层的一个限制---MTU(最大传输单元).

       传输层TCP协议协商的MSS根据MTU计算得到,因此TCP传输的数据到了网络层通常不会分片.

       但是UDP协议传输数据,只限制小于64K-28就可传输,但是若大于MTU大小就会在网络层进行数据分片---网络层数据分片主要针对UDP

13位分片偏移,为什么要以8字节为单位?

            13位表示的最大大小8192=2^10*2^3;但一个完整的UDP报文有可能接近64K大小;最后一个分片有可能偏移量都6万多了,13位偏移大小没法表示;因此这个字段中大小是以8字节为单位8=2^3;8192就表示具体偏移量8192*8=64K,完整表示偏移量.

地址管理与路由选择:

IP--无符号的32位整数,网络中唯一标识一台主机.IP地址给主机分配保证唯一性.

DHCP--动态地址分配,整个网络由很多小网络组成,按照网络进行地址分配.

IP地址组成:网络号+主机号

网络号:一个路由组建局域网时所对应的网络标识--(每个路由器对于接收到的数据进行源地址判断,这个主机是否属于自己网络,属于才转发,不属于则直接丢弃)--必须使用分配的地址上网(避免别人设置造成冲突)

主机号:局域网中大家拥有相同网络号的情况下,标识唯一的一个主机.(主要保证网络号如何划分).

网段的划分:

早期:将所有IP地址划分为5类地址,如下:

 组建什么网络,去权威机构申请,分配一个网络号,接下来组建网络,主机号的分配由自己完成.

现代划分方式:--CIDR方案:引入一个新的字段--子网掩码

子网掩码:无符号32位的整数,不过数据由连续的二进制1组成

 1.子网掩码取反可以得到局域网中的最大主机号,从0到最大主机号就是局域网中主机号的分配范围255.255.255.0--255--0~255

  2.子网掩码与IP地址相与得到网络号;(路由器收到一个数据,拿数据的源地址与自己网络号相与,与自己网络是否相匹配)~255.255.255.252->0.0.0.3-> 0~3就是这个局域网主机号,这个局域网可连接2个主机.

若有一个公司,申请一个C类地址,192.168.122.0/24,公司有4个部门,想要平均划分初4个子网,请问如何划分,划分后各个子网的网络号是多少?子网掩码是多晒?IP地址范围是多少?

C类网络:拥有256个主机号0~255;平均划分4个子网--那么每个子网的主机号64个,主机号范围0~63

最大主机号取反就可得到子网掩码:00111111(63取反)->255.255.255.(11000000)192->255.255.255.192

网络范围:192.168.122.0~192.168.122.63--192.168.122.0/255.255.255.192

                192.168.122.64~192.168.122.127--192.168.122.64/255.255.255.192

                192.168.122.128~192.168.122.191--192.168.122.128/255.255.255.192

                192.168.122.192~192.168.122.255--192.168.122.192/255.255.255.192

特殊的IP地址:

1.主机号全为0的IP地址:网络号--用于标识网络--不能分配给主机

2.主机号全为1的IP地址:UDP局域网广播地址--不能分配给主机

UDP支持局域网广播,将数据发送的广播地址,可认为是发送给局域网中的所有主机--局域网所有主机都能识别

3.127.0.0.1:每个主机都有的本地虚拟回环网卡地址--用于本机网络测试

4.0.0.0.0:适配本机任意网卡地址,用于服务端监听地址--标识监听本机所有网卡IP

5.255.255.255.255:全网广播地址--任意一个主机拿到发往这个地址的数据都会认为和自己匹配--常用于DHCP广播

路由选择:根据数据中的目的网址,来为数据选择一条合适的路径

每一个主机连接上路由器之后,都会全网广播DHCP请求,路由器收到后会回复:

DHCP响应:给主机分配IP地址   当前所在网络的子网掩码      当前所在网络的网关地址

每个路由器中,都包含一张路由表:

Destination                     Gateway              Genmask                 Use   lface

目标网络                         网关地址              子网掩码                  对应这个网络的网卡名称

192.168.2.0                                                255.255.255.0           eth0--作为组建局域网的网关网卡

192.168.1.0                                                255.255.255.0           eth1--作为连接上层网络的网卡

default                         192.168.1.1                                               eth1

路由选择的过程,其实就是通过路由表进行目的主机的网络匹配,看是否是与自己相连的网络,若是,则直接通过连接这个网络的网卡,发送出去,若不是,则将数据发送给自己的网关设备(上层路由器),让自己的网关设备进行选择.

公网与私网(外网与内网)

私网:仅限于网络内部通信的网络,无法连接外部

公网:互联网

IP地址不够用,除了DCHP还有NAT技术--网络地址转换技术

一个路由器可以组建一个私网,私网中的主机上网时候都是用路由器对外的一个地址上网,那么这些私网中的主机IP地址与其他私网中的主机IP地址就不怕存在冲突问题;

他们对外都是使用路由器上网的,只要保证不与外部IP地址冲突就可以,但是相邻的两个网络不能使用相同网络号.网络是否相邻,主要取决于路由器的连线,与路由器相连线的网络都属于相邻网络

在RFC1918中规定,公网与私网,并且能够用于组建私网的网址有哪些:

10.*.*.*         172.16.*.*~172.31.*.*       192.168.*.*

大型私网        中型私网                           小型私网

数据链路层

物理地址: MAC地址---用来识别数据链路层中相连的节点;不能修改,唯一的.无符号8字节整数

以太网协议格式:

6字节源MAC地址/6字节目的MAC地址:标识从哪个设备传输到哪个设备

proto:上层网络层协议类型,用于数据分用

data:网络层的报文数据

CRC:校验和数据帧尾

一块网卡封装了以太网帧之后(包含源MAC和目的MAC以及上层协议),将数据帧广播给与自己相连的设备,收到数据的网卡,查看MAC地址是否是自己的,若是,则接收,若不是则直接丢弃.

怎么知道对方的MAC地址是多少?

ARP协议:介于网络层与链路层之间的协议;协议中既包含IP地址还包含MAC地址--通过IP地址获取MAC地址

 向相邻设备广播ARP请求(包含由对方的IP地址和自己的信息),相邻设备收到ARP请求之后,进行解析,查看目的端IP地址是否与自己符合,若不符合则直接丢弃,若符合,则组织ARP应答,填充自己的MAC地址回复给对方.获取到对方MAC地址之后,会将MAC地址与IP地址对应的关系缓存一段时间(20~30分钟)(IP地址是动态分配的)

ARP局域网欺骗攻击:恶意主机收到ARP请求之后,直接回复ARP应答,伪装自己就是指定主机.

MTU:最大传输单元---限制链路层数据帧大小--主要限制网络层IP报文的长度

 MSS:最大数据段大小--应用层交付给传输层的数据大小

假设mtu=1500;请问mss是多少?  mss=mtu-40 1460

mss是TCP协议中特指的信息,最大数据段大小都是以最小头部大小进行计算的,而TCP和IP协议报头都是最小20字节

UDP的MSS就是MTU-28:因为UDP报头长度是固定的8字节

MTU对于TCP协议的影响:

TCP传输,在三次握手的时候,通过MTU计算自身的MSS,并且进行双方协商,每次都只从发送缓冲区取出不超过MSS大小的数据进行传输,因此,TCP在传输层会自动进行数据分段,因此在网络层不会进行数据分片.

MTU对UDP协议的影响:

因为UDP的传输层并不会计算MSS,只要数据大小小于64K-28,都能发送,但受限于MTU,可能会在网络层进行数据分片,将一个完整的大报文分片成为一个个小的数据片发送,到达对端之后再进行分片重组.

因为UDP不保证可靠传输,意味着一个完整报文中若有一个分片出问题,则整个报文都被丢弃,意味着UDP传输时候,分片越多,传输出问题的几率越大.程序员在编写UDP传输程序在应用层时考虑MSS的问题(sendto给与的数据大小最好不超过MSS大小),计量减少分片概率.

其他典型协议及技术:DNS/ICMP/NAT/NAPT/代理

DNS:Domain Name System 域名系统--用于进行域名解析,通过域名获取IP地址的系统

     域名:www.baidu.com--服务器的名称

DNS是应用层协议          DNS底层使用UDP进行解析        浏览器会缓存DNS结果

域名解析服务器:采用分布式存储

域名解析服务器进行了层级划分遍布世界各地,增加了容灾能力,并且提高了性能压力.

域名服务器的层级划分:根域名服务器(向权威机构授权)->顶级域名服务器->二级域名服务器->三级

域名的等级划分:顶级域名(.com/.org/.gov/.edu.../.cn/.jp...)->二级域名(.baidu.com/.qq.com)->三级域名(docs.qq.com)...

域名的解析流程:

 浏览器中输入URL回车之后发生了什么?

1.域名解析,得到服务器IP地址

2.根据HTTP协议格式组织HTTP请求数据

3.搭建TCP客户端,与服务器建立TCP连接,发送HTTP请求数据

4.等待服务器响应,进行解析,解析后将正文数据展示在浏览器上

ICMP:这是一个网络层协议,用于进行网络探测

ssh使用22端口/telnet使用23端口/ping使用多少端口--ping这个工具通过ICMP协议实现,而ICMP是网络层协议,不涉及端口

NAT/NAPT

NAT:网络地址转换技术--NAT服务会将流经网关设备的数据的源IP地址修改为自己的IP地址然后转发出去

功能:实现大量私网主机使用同一个对外IP地址进行上网(若不修改源IP地址,则源IP地址是一个私网地址,对方收到之后无法回复)

公网的设备只能找到公网地址,找不到私网地址,因此进行源IP地址替换,目的是为了让对方回复的时候,回复到自己网关设备上,然后网关设备在转发给自己.

 但是在同一个私网中,有可能同时有很多主机都访问同一个服务器,回复过来后,网关设备如何选择给谁转发

NAPT:进行地址映射

NAPT对流经的数据进行修改源地址并转发的时候会记录对应地址关系.

代理和NAT的区别:

NAT服务通常部署在网关设备上,运行在网络层,进行源地址替换,目的主机一直是指定服务器

代理服务是一种应用,可以部署在任意设备上,运行在应用层,目的主机首先请求代理服务器,为了让代理服务器替自己请求.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值