文章目录
- IP协议
- 网段划分
- 分类划分法
- CIDR 方案
- 路由
- NAT网络地址转换技术
- IP报文的另外三个参数
- mac帧
- ARP协议
- 交换机
- ICMP
- 代理服务器
IP协议
TCP有将数据 可靠、高效 发给对方的 策略,而IP具有发送的能力,即将数据从A主机送到B主机的 能力 。
用户要的是100%的概率送到!
IP地址 = 目标网络 + 目标主机
IP协议报头
4位首部长度:同TCP(基本单位是4字节)
8位协议:表征有效载荷是什么报文(向哪个协议交付)
8位服务类型:不同种类的传送策略 (最小延迟,最大吞吐量,最高可靠性,最小成本),四种是互斥的,只能选择一个
16位总长度(字节数):报头和有效载荷的有效分离。
8位生存时间:该报文在转发过程中,最多经历的路由器的次数
源IP和目的IP,而在TCP报文里则有源端口和目的端口,这样即标识了两个进程。
网段划分
挨个查找——一次只能排除一个人,如果能一次排除其他大部分人,查找效率才能大大提高,因此我们必须进行子网划分
国内的网络是被国内运营商顶层涉及的,而国际的网络则是各个国际商量设计。
分类划分法
A类网络第一位是0,其他网络是1
B类网络第一位是1,第二位是0,其他网络是1
依次类推…
CIDR 方案
引入子网掩码来区分网络号和主机号。使用这样的方式能更大程度的利用IP地址。
路由
通过查询路由表,决定路径选择。
NAT网络地址转换技术
NAT技术可以分为去和回两个过程。
去:不断替换IP报文中源IP地址,直到到了目标网络的入口路由器,再通过ARP协议通过IP地址获得硬件地址,实现局域网内的数据发送。
回:
回的时候依靠一张转换表,路由器会维护这样一张转换表,当服务器要给客户端发送消息时,会按照这个表的转换关系来替换。由于NAT技术的存在,公网无法直接访问内网(没有映射关系)。
NAT转化表:
完整转化过程:
IP报文的另外三个参数
16位标识:通过十六位标识来区分ip报文
3位标志:
第一位保留,
第二位置为1表示禁止分片,为0表示允许分片;
第三位表示更多分片,1表示还有报文,0表示没有报文了
13位片偏移:
1、由于IP报文携带了源IP地址,因此IP层具有区分不同客户端的能力
2、如何知道是否分片
- 只要片偏移不是0,提取16位标识,这个标识一定分片了
- 如果片偏移是0,看更多分片,为1则分片了,为0则没有分片了
开始报文:片偏移为0 且 更多分片为1
中间报文:偏移量>0 且 更多分片为1
结尾报文:片偏移不为0 且 更多分片为0
独立报文:片偏移为 0 且 更多分片为0
3、如何保证分片收全
头尾丢失我们知道
自身偏移 + 自身大小 = 下一分片的偏移量
4、怎么组装在一起
按照升序遍历,同问题3
5、如何保证组合在一起的报文是对的
16位校验和。
网络中,分片应尽量成为少数情况,应尽量减少这样的情况,如果其中有一片丢失,TCP收不到应答,就会一整个重新发送。也就是说过多的分片,容易增加丢包率
所以,TCP在发送数据时,也会尽量规避发送过大的报文!这也就是为什么发送缓冲区不直接发一大坨数据过去,而是有一个滑动窗口存在。
MSS(最大段尺寸):1500-20-20 = 1460;
mac帧
路由是让我们找到正确的路径,比如为什么要从路由F到路由G,那F怎么到G的,就是数据链路层考虑的问题了,即要解决从一个子网内,如何发送数据的问题。
之前我们提到了,IP层提供了将数据从A主机跨网络送到B主机的能力,其实这个能力是由mac帧和IP层共同实现的。
一张网卡有一个mac地址,这个地址全球唯一。
局域网通信原理:
网卡中,可以设置为混杂模式,不对报文的目标MAC地址进行认证,直接向自己上层交付
在以太局域网中,任何时刻,只能由一台主机给另一台主机发送数据帧,否则的可能会发生数据碰撞的问题,会进行碰撞检测,和碰撞避免。这里的数据也是临界资源。令牌环网本质是锁和临界资源的关系。
黑掉局域网:向局域网不断发送垃圾数据,让 其不断碰撞。
重传在数据链路层也存在。
mac帧报文:
目的地址为全F的时候,为广播所有的局域网主机。
ARP协议
ARP协议工作在链路层,ARP协议建立了主机 IP地址 和 MAC地址 的映射关系.
- 源mac地址、目的mac地址在以太网首部和ARP请求中各出现一次,对于链路层是以太网的情况来说是多余的,其他类型网络可能是必须的
- 硬件类型指链路层网络类型,1为以太网
- 协议类型指要转换的地址类型,0x0800为IP地址
- 硬件地址长度对以太网为6字节
- 协议地址长度对于ip地址为4字节
- op字段为1表示ARP请求,op为2表示ARP应答
任何主机收到ARP都会优先看op,
交换机
ICMP
ICMP隶属于网络层,他与ip的关系类似于arp和mac的关系,ICMP协议是用来验证网络是否畅通的;IP不保证可靠性,但ICMP提供了这个功能。
ping命令使用哪个端口号?ping命令基于ICMP,不存在端口号的概念
代理服务器
正向代理:
反向代理: