一.IP协议
1.IP协议头格式
? 4位版本号: 指定IP协议的版本, 对于IPv4来说, 就是4
? 4位头部长度:以4字节为单位,IP头部的最大长度位16字节
? 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~192.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:全网广播地址
? 127.0.0.1:每个主机上的虚拟回环网卡地址,用于进行本地网络回环测试
? 主机号全为0的IP地址:网络号
? 主机号全为1的IP地址:UDP局域网广播
3.公网和私网
? 公网/外网:通常是我们所说的互联网
? 私网/内网:一个组织所建立的内部私有网络(无法直接与外部通信)
? 同一个私网内部的主机可以直接通信,但如果私网内部主机想要和外部进行通信,需要使用这个私网对外的 公网网卡。私网内多个主机对外通信,使用的都是同一私网对外的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地址返回,如果本地域名服务器不能完 成转换工作,就向其上一级域名服务器请求。依此类推,直至根域名服务器。
? 如果根域名服务器无法完成转换工作,有两种解决方案:递归查询和迭代查询;
? 递归查询:一级级域名服务器请求,一级级响应。对根域名服务器造成工作负担。
? 迭代查询:被查询的服务器直接把可查询的服务器地址返回,不知道这个域名,但可以从这个服务器查到。
四.典型面试题
1.浏览器输入url回车后发生了什么?
? 先进行域名解析,域名解析完成后搭建tcp客户端,组织http请求,把请求发送给服务器并等待服务器响应,服 务器收到请求后根据请求进行解析,执行该请求对应的业务处理,处理之后组织一个http响应,将响应发送给浏 览器,浏览器根据content-type对响应进行解析并处理正文。
|