网络基础3
一.IP协议
1.IP协议头格式
4位版本号: 指定IP协议的版本, 对于IPv4来说, 就是4
4位头部长度:以4字节为单位,IP头部的最大长度是60字节;
8位服务类型:3位优先权弃用、4位TOS字段、1位保留字段(固定为0);4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本,四者相互冲突,根据应用场景的不同,只能选择其中的一个。
16位总长度: IP数据报整体占多少个字节,IP报文的最大大小为64k,UDP报文的最大大小为64k-28
16位分片标识: 标识分片属于哪个报文,用于包序管理
3位标志:一位保留,一位禁止分片
13位分片偏移:多个数据分片在对端会进行分片重组,分片偏移就是为了表示当前分片在原始报文中的位置 (相对于起始位置的偏移量),因为13位比特位表示的最大数字为8192,无法在64k报文中表示偏移量,因 此分片偏移以8字节为单位
8位生存时间(TTL): 数据报到达目的地的最大报文跳数.。一般是64,每次经过一个路由,TTL减1, 若一直减到 0还没到达, 就丢弃报文。 这个字段主要是用来防止出现路由循环
8位协议: 当前数据所使用的协议,用来数据分用时选择解析协议
16位校验和:校验数据一致性
32位源端/目的端IP地址:标识通信两端主机
选项字段(不定长, 最多40字节):保存一些路由信息
分片标识和分片偏移字段是为udp提供的,当udp报文大于MTU(链路层限制的最大数据帧大小)时,会在网络层进行数据分片。
udp传输时,如果数据大小大于MTU,但小于64k-28则会在网络层进行分片,把一个大的完整的报文分割成多个小的数据分片,封装IP报头进行传输。udp分片重组时,如果一个分片出问题,则整个报文都会被丢弃。因此分片越多,传输出问题的几率越高,所以使用udp传输数据时,最好在上层分包时就计算好mss大小进行分包,尽量减少分片出错概率。
tcp传输并不会在网络层进行数据分片,因为tcp在三次握手时双方就协商了mss(最大数据段大小,mss是根据mtu计算出的最合适的传输数据大小),网络通信时数据都不会大于mss。
mtu的大小:以太网默认1500
2.地址管理
(1)IP地址组成
IP地址分为两个部分, 网络号和主机号
网络号是一个网络的标识,在同一个网络中分配的地址都拥有相同的标识
主机号是一个网络中主机的标识,同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号
(2)网段的划分
最初根据网络号和主机号,将所有IP地址划分为5类:A类,B类,C类,D类,E类
A类:最高位固定为0,7位网络号,24位主机号
网络号范围0~127,每个网络拥有2^24个主机
B类:高两位固定为10,14为网络号,16位主机号
网络号范围128.0~191.255,每个网络有2^16个主机
C类:高三位固定为110,21位网络号,8位主机号
网络号范围是192.0.0~223.255.255,每个网络有256个主机
D类:不分网络 ID 和主机 ID,该地址用于多点广播
E类:不分网络 ID 和主机 ID,该地址用于实验
随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址 很快就分配完了, 而A类却浪费了大量地址。针对这种情况提出了新的划分方案, 称为CIDR
CIDR在早期IP地址的基础上,使用子网掩码进行更细致的网段划分。
子网掩码:无符号4字节整数,由连续的二进制1组成
子网掩码的用处:
1.子网掩码取反可以得到一个网络最大的主机号(准确的说是一个网络中第一个网段的最大主机号);
2.子网掩码和IP地址相与,可以得到网络号;
(3)特殊的IP地址
0.0.0.0:本机任意网卡IP地址,常用于服务器绑定监听地址
255.255.255.255:全网广播地址,收到发往255.255.255.255这个ip地址的数据包,所有主机都会认为是发送给自己的
127.0.0.1:每个主机上的虚拟回环网卡地址,用于进行本地网络回环测试
主机号全为0的IP地址:网络号,不能分配给某个主机
主机号全为1的IP地址:UDP局域网广播
3.公网和私网
公网/外网:通常是我们所说的互联网
私网/内网:一个组织所建立的内部私有网络(无法直接与外部通信)
-
同一个私网内部的主机可以直接通信,但如果私网内部主机想要和外部进行通信,需要使用这个私网对外的公网网卡。私网内多个主机对外通信,使用的都是同一私网对外的IP地址,组建私网可以节省大量的公网IP地址。
-
组建私网的IP地址和公网中的IP地址不能重复,组建私网的IP地址是有固定地址的,这些地址在公网中不会被使用,否则路由器无法确定究竟发送给同一私网的主机还是发送给公网的主机,常见的固定的用于组建私网的IP地址如下: 10.X.X.X , 172.16.X.X~172.31.X.X , 192.168.X.X
4.路由选择
在复杂的网络环境中为每一条数据选择合适的路径进行转发
为了判定当前IP数据包应该发往何处,因此每个网络中的节点内部都维护一个路由表
路由表的格式如下:
将目的IP地址和路由表中每条数据的子网掩码相与,得到目的网络的网络号,和路由表中的目的网络IP地址进行核对,如果是则由该目的网络IP地址对应的接口(网卡)发出IP数据包,如果不是继续匹配下一条。如果都不匹配,就按缺省路由条目,由缺省路由对应的的网卡发出IP数据包。
二.ARP协议
ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议。ARP协议建立了主机 IP地址 和 MAC地址 的映射关系,通过ARP协议,可以根据IP地址找到对应的MAC地址。
工作流程
源主机在局域网广播ARP请求;
相邻设备收到ARP请求后,检测目的IP地址是否和自己的IP地址相同,不同直接丢弃,相同则组织ARP应答, 将自己的MAC地址填充进行回复;
通信两端都会将mac-ip的映射关系保存一段时间,一般为20分钟。
因为ARP请求时通过广播形式发送的,所以网络中存在一种ARP局域网欺骗攻击。
三.DNS协议
DNS协议将域名解析得到对应的IP地址
1.域名服务器和域名的划分
(1)域名服务器
进行域名和与之相对应的IP地址转换的服务器。
层次从高到低分为根域名服务器,顶级域名服务器,二级域名服务器,…
(2)域名
域名从高到低划分为顶级域名,二级域名,三级域名
常见的域名:
顶级域名:.com .org .gov .cn .jp .en
二级域名:.baidu.com qq.com
三级域名:.baike.baidu.com/
2.域名的解析流程
(1)首先查看浏览器缓存信息;
(2)缓存信息不存在则查看本地hosts文件;
(3)请求本地域名服务器,如果本地域名服务器中有对应域名,就将IP地址返回,如果本地域名服务器不能完成转换工作,就向其上一级域名服务器请求。依此类推,直至根域名服务器。
如果根域名服务器无法完成转换工作,有两种解决方案:递归查询和迭代查询;
递归查询:一级级域名服务器请求,一级级响应。对根域名服务器造成工作负担。
具体过程:
根域名服务器作为客户端向下属的服务器请求,下属服务器完成转换后返回给根域名服务器,根域名服务器再一层层向下返回给本地DNS服务器;
迭代查询:被查询的服务器直接把可查询的服务器地址返回,不知道这个域名,但可以从这个服务器查到。
根域名服务器不能完成转换工作,但是他会告诉本地DNS服务器,你去哪个服务器可以完成转换工作,本地DNS服务器就向对应的服务器进行请求。
四.典型面试题
1.浏览器输入url回车后发生了什么?
先进行域名解析,域名解析完成后搭建tcp客户端,组织http请求,把请求发送给服务器并等待服务器响应,服 务器收到请求后根据请求进行解析,执行该请求对应的业务处理,处理之后组织一个http响应,将响应发送给浏 览器,浏览器根据content-type对响应进行解析并处理正文。