IP协议格式和字段含义
4位版本:IPv4或者Ipv6(他们两个不兼容);
4位首部长度:报头=首部长度*4;
8位服务类型:3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0); 4位 TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个;
16位总长度:报文(固长)+有效载荷;封装和解包;
8位生存时间:数据报到达目的地的最大报文跳数. 一般是64. 每次经过一个路由, TTL -= 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环;
8位协议:TCP或者UDP,采用不同的编号;
16位首部校验和:使用CRC进行校验, 来鉴别头部是否损坏;
32位源IP地址:发送端的IP地址;
32位目的IP地址:接收端的IP地址;
2.分包(分包是少数情况)
Q:为什么会有分包?
A:因为数据链路层的有效载荷很小,只有1500;
16位标识:如果属于一个TCP报文被分包就会是相同的16位标识,不被分包的也自己的16位标识;(对端排序标识,达到按序到达);
3位标志:1位表示是否被分包,1位表示是否是被分包的最后一个IP报文,1位保留;
13片偏移:被分包的每个包的最小的下标,对端的网络层在拼接为一个完整的TCP报文,在向上交付;缺点:如果被分包的一个部分被丢包,那么对端的网络层拼接不上,则整个被分包的报文都会被网络层丢弃;
一个IP报文有20报头,数据链路层1500-20=1480;每次只能传1480个字节数据;
Q:如何判断有无丢包?
A:可以分成前中后三部分,如果13位片偏移是0就是前部分,中部分就是前面的累加字节数,后部分看3位标志中的1位表示是否是被分包的最后一个IP报文;
3.网段划分
IPv4网络通信总共有2^32IP地址,大概42亿多;
IP可以分为ABCDE5类,A类是2^32的一半,B类又是A类的一半,C类是B类的一半,依次类推;
A类就有2^7个,也就是2^网络号,把A类的所有IP分为2^7份;网络号可以区分国家比如:1是中国、2是美国,这是例子不一定是这个映射;
各类的具体IP数值:
A类 0.0.0.0到127.255.255.255
B类 128.0.0.0到191.255.255.255
C类 192.0.0.0到223.255.255.255
D类 224.0.0.0到239.255.255.255
E类 240.0.0.0到247.255.255.255
3.1.子网掩码
A类有2^24对于一个县太多了,应该划分的更小保证不浪费且更便于管理;
网络号 | 140.252.20.64 |
子网掩码 | 255.255.255.240 |
子网地址范围 | 140.252.20.64~140.252.20.79 |
4.数据链路层
4.1.MAC帧协议
用于物理层传输用;
6位源地址和6位目的地址:48个比特位,每个都是唯一的电脑出厂自带在网卡上
类型帧协议类型字段有三种值,分别对应IP(传数据)、ARP/RARP(获取MAC地址),向上交付的不同;
4位CRC:校验,传输可能导致比特翻转;
4.1.1.MTU
以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充 位;
最大值1500称为以太网的最大传输单元 (MTU),不同的网络类型有不同的MTU;
MSS=MAC帧报头+MTU
双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值,然后双方得知对方的MSS值之后, 选择较小的作为最终MSS,MSS的值就是在TCP首部的40字节变长选项中(kind=2)
4.2.ARP协议
ARP协议和MAC帧协议都属于数据链路层协议
APR协议用于IP地址换MAC地址,MAC帧协议用于局域网中传输;
两个协议在数据链路层的位置:两个协议是上下层关系
ARP协议的格式
硬件类型指链路层网络类型,1为以太网; 协议类型指要转换的地址类型,0x0800为IP地址; 硬件地址长度对于以太网地址为6字节; 协议地址长度对于和IP地址为4字节;
op字段1表示ARP请求,2表示ARP应答;
以太网地址就是MAC地址
ARP协议原理:
5.其他的协议和技术
5.1.DNS技术
用来把域名转化为IP地址;
域名简介:
www.qq.com
.com:一级域名:表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织)等
qq:二级域名,公司名
www.:只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格 式, 来表示主机支持的协议
5.2.一个问题,ping命令有端口号吗?
A:没有,ping是基于ICMP协议的一个命令,icmp是是一个网络层协议
5.3.代理服务器
5.3.1.正向代理:靠近客户端
收集请求,再由代理代理服务器来发送请求,校园网就是这样设计的,好处:
身份识别:只有身份正确的才能使用,外来人就不能免费使用
加速访问:被多次访问的资源可以缓存下来
识别请求:把客户端一些不安全的请求直接丢弃
5.3.2.反向代理:靠近服务器端
负载均衡:把大量的请求分别给各个server,让每台服务器都得到好的利用