前导
为什么要把数据包由F->G呢?
是由目的IP决定的,是由路由查找完成的
如何把数据包由F->G?
数据链路层决定的,怎么把报文从一跳跳到下一跳
凡是能够跳转到下一跳
一定是直接相连的节点,直接连接的节点,一定是在同一个局域网(网段)
所谓的网络,本质就是各种局域网相连的过程
局域网通信的问题!!!
同一个局域网,两台节点能直接通信,
以太网&&令牌环网
以太网的帧格式
有效载荷:网络层以上包含的所有报头及有效载荷都在数据帧的有效载荷中
如何分离报头和有效载荷
头14个字节,尾部4个字节
如何决定将自己的有效载荷交付给上一层
通过类型决定,0800就是IP地址,0806就是ARP请求或应答
为什么要规定1500上限
数据帧很大,意味着主机发的数据帧很长,在
物理层光电信号
发送的时候需要较多的时间,意味着一个数据帧在网络中转发的时候,占据一个单位时间就会变长,增加局域网中冲突的概率,所以一定是尽快发送,时间越短,可发的数据量越少
mac地址
:唯一标识一台主机的,在出厂的时候就配好了,6个字节48位
目的地址
:发给谁,目的的mac地址
,6个字节
源地址
:从哪个主机发送的,mac地址
,6个字节
类型
:有效载荷装的是什么,0800
,两个字节,代表IP数据报,0806
,ARP请求
CRC
:校验,对数据进行校验工作,4个字节
mac地址
- MAC地址用来标识数据链路层中相连的节点
- 长度为48位,6字节,一般用16进制数字加上冒号的形式来表示(08:00:27:03:fb:19)
- 在网卡出厂时就确定了,不能修改,mac地址通常是全球唯一的
路由器MTU可能不同在路上也能分片:因为13位片偏移
是相对于相比较原始的报文分的,所以不会影响
MTU对于TCP协议的影响
MSS
(Max Segment Size):TCP单个数据报的最大消息长度(1460)
- TCP的数据报不能无限大,还是受制于MTU
- TCP在建立连接的时候,通信双方也会进行MSS协商
- 双方在发送
SYN
的时候,会在TCP 头部写上自己能支持的MSS值 - 双方得知对方的MSS值之后,就会选择较小的作为最终的
MSS
- MSS的值就是在TCP首部40个字节变长选项中
ARP
根据路由表,结合目的IP,根据目的网络进行查找
如何在局域网中,通过IP地址,获得该主机对应的MAC地址?
ARP协议(地址转化协议),把IP地址转化为MAC地址,在一个局域网内发现对方mac地址的协议
ARP协议是数据链路层的协议
数据发送的时候是怎么知道对应主机的MAC地址
如果是ARP请求的时候,只会交付给ARP,不会给网络层协议(交付的是管理数据,ARP请求,)
给网络层交付的是(用户数据)
- 源主机发出ARP请求, 询问要去的IP地址对应的MAC地址,并将这个请求广播到本地网段
- 目的主机收到了这个广播的ARP请求,发现其中的IP地址和本机相符,则发送一个ARP应答数据报给源主机,将自己的硬件地址MAC地址,写在应答包里面
先广播
再单发
的过程
ARP报文格式
数据报文也被MAC帧封装,一定是再MAC帧上层,
硬件类型
指的是链路层的网络类型,有以太网,令牌环网,无线wifi,这里1为以太网(不变的)协议类型
值要转化的地址类型,0x0800为IP地址(不变的)硬件地址长度
,6字节为MAC地址协议地址长度
,4字节为IP地址op
字段为1表示ARP请求,op字段为2表示ARP应答发送端以太网地址
我请求的人自己的mac地址发送端ip地址
,请求的人自己的IP地址目的以太网地址
这是我们需要的,就填成f
系统也会维护一些缓存IP和mac地址映射,发过数据就会有保存,缓存有时间限制
发消息先要做ARP,ARP的消息会先被缓存起来
ping 检测网络连通性,发送报文,先ARP,ping成功就成功ARP了
DNS
Domain Name System
DNS就是一套从域名映射到IP的系统
DNS背景
IP地址的记忆麻烦,于是就产生了DNS系统
- 一个系统管理的机构,维护系统内部的每一个主机的IP和主机名
- 如果新计算机接入网络,将这个信息注册导数据库中
- 用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,进行查找对应的IP地址
域名介绍
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称
www.baidu.com
域名使用**.**连接
- com:一级域名,表示一个企业域名,同级的还有net(网络提供商),org(非盈利组织),edu(教育组织),gov(政府),cn(中国),
- baidu:二级域名,公司名
- www:只是一个习惯的用法,之前人们使用域名的时候,往往命名类似于ftp.xxx.xxx/www.xxx.xxx这样的格式,来表示主机支持的协议
域名解析流程
- 浏览器的缓存当中域名和IP地址的对应关系
- 本地的hosts文件当中也会缓存域名和IP地址对应的关系
ICMP
Internet Control Message Protocol(互联网控制报文协议)
ICMP是网络层的协议,不经过传输层
一个搭建好的网络,要先进行一个简单的测试,来检验一下这个网络是否通畅,但是IP协议并不提供可靠传输,如果丢包了,IP协议并不能通知传输层是否丢包以及丢包原因
功能
- 确认IP包是否成功到达目标地址
- 通知在发送过程中报文丢失的原因
- ICMP也是基于IP协议工作的,但是它不是传输层的功能,它还是在网络层上面的协议
- ICMP也只能搭配IPV4使用,如果是IPV6,需要使用ICMPv6
如果这个报文无法送达,那么就由最后一个路由器返回ICMP报文给主机A,告知无法送达
类型
- 一种是用于诊断的查询信息,是查询报文的类型,
- 一种是通知报文无法送达的原因,是差错报文类型
ping命令的底层使用的就是ICMP协议,ping命令没有端口号,因为ping命令没有使用传输层协议,绕过了传输层,直接使用IP报文
- ping的是域名,而不是url,一个域名可以被DNS解析成IP地址
- ping命令不光能验证网络的连通性,也能统计响应实际,和TTL
- ping命令会先发送一个ICMP echo request 给对端
- 对端接收到之后,会返回一个ICMP Echo Reply
NAT技术
我们在进行路由的时候会把源端口换成路由器的WAN口号,目的地址就一直保持不变,这样就能够不断的进行路由
现在我们要进行服务端返回给客户端
路由器还可以进行NAT,构建了一个转化表,具有唯一性,可以互为键值对
IN_MAP将源IP源端口和转化的wan口IP进行映射
OUT_MAP可以将转化的wan口IP映射成源IP
每个路由器都能建立映射关系,构建一个虚拟的子网,大大减少了
- 映射模式:虚拟机就相当于在计算机里面跑计算机,我们就可以把我们自己的计算机看作一个路由器,把虚拟机的ip地址给映射一下,就可以维护这个虚拟的ip了
- 桥接模式:我们把虚拟机和自己的计算机看作是相同的地位
缺陷
由于NAT依赖这个转化表,所以由许多限制
- 无法从NAT外部向内部服务器建立连接
- 转化表的生成和销毁都需要额外的开销
- 通信过程一旦NAT设备异常,即使存在热备(备胎),所有的TCP连接也会断开
代理服务器
路由器往往都具有NAT功能,通过NAT设备进行中转,完成子网和其他设备之间的同行过程
代理服务器看起来和NAT设备很像,客户端像代理服务器发送请求,代理服务器将真正的请求发送给真正要请求的服务器,服务器返回结果后,代理服务器又把结果传给客户端
正向代理,靠近客户端
- 便于在内网对身份做认证,
- 加速内网访问服务
- 可以对访问内网的请求进行筛查
反向代理,靠近服务器
服务端也有一个代理服务器,所有的请求都是先经过代理服务器,不给它做任何的资源,不做业务处理只做业务转发,这样代理服务器的转发可以根据后端每台机器的负载情况进行转发,,
4. 负载均衡
5. 安全,不会把公司主机暴露出去,
NAT和代理服务器的区别
- 应用上:NAT设备是网络基础设备之一,一般就内置在路由器中,解决的IP不足的问题;代理服务器更贴近现实,如用代理服务器进行翻墙,加速器
- 底层上:NAT工作在网络层,进行IP替换,代理服务器在应用层,直接对整个报头进行替换
- 使用上:NAT一般在局域网出口部署,代理服务器可以在局域网,也可以在广域网,也可以跨网络
- NAT一般集成在防火墙,路由器等硬件设备上,代理服务器就是一个软件程序,需要部署在服务器上