目录
一、以太网
1.认识以太网
"以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的 内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等。以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等。
2.以太网帧格式
目的地址与源地址都是网卡的硬件地址(MAC地址),长度是48位。
帧协议类型字段有三种值,分别对应IP、ARP、RARP。
帧末尾是CRC校验码。
以太网帧如何解包,将数据和报头分离开?
UDP报文中报头有固定长度并且有16位UDP长度表示UDP报文的长度。TCP报头中有4位的数据偏移来确定报头的长度。IP报头中有4位首部长度和16位数据长度来表示整个报文长度。
而以太网帧报头和校验和都是固定长度,6 6 2 4,先提取6、6、2字节个数据,就可以获得数据了。
在局域网中通信时,不只是两台主机进行通信,而是很多主机共享网络资源,其他主机也能接收到,信息发送到局域网中,每个主机通过数据链路层的解析报头发现不是目的主机不是该主机就会丢弃掉该报文。这么多主机同时发消息到局域网中,报文和报文之间会产生碰撞,则需要碰撞避免,各主机会间隙性停止发送报文。局域网中还会设置交换机来限定碰撞域的大小。数据越大也会增加碰撞的几率,所以要有单次数据发送的大小限制,这就是MTU,一般大小为1500字节。
传输层提供可靠的策略,物理层提供路径选择和目的地,链路层提供下一跳转发的能力。
2.ARP协议
我们如何确认在同一局域网中,对方的MAC地址是多少呢?
这就要使用ARP协议,将IP地址转成MAC地址。
ARP协议属于数据链路层,处于MAC地址的上层。
ARP协议的请求报头存放在以太网帧的数据中。
硬件类型:硬件类型指链路层网络类型,1为以太网。
协议类型:协议类型指要转换的地址类型,0x0800为IP地址。
硬件地址长度:对于以太网地址为6字节。
协议地址长度:对于和IP地址为4字节。
op字段为1表示ARP请求,op字段为2表示ARP应答。
一般一个ARP请求会这样填写:
ARP应答
注意:MAC帧有明确目的MAC地址时在局域网传递,传到不是目的主机的主机时,直接会在MAC帧层丢弃。而不具有明确MAC地址时,此时目的地址填的是全F,表示广播, 在此局域网中的主机都要受到,传到不是目的主机的主机时,会继续提取目的IP地址,来判断是否是目的主机,不是在丢弃。两种丢弃一个是在MAC帧层丢弃,一个是在ARP协议层丢弃。
一个主机能发送ARP应答也总在接收ARP请求。当ARP协议层获得报文时,说明得到了MAC帧层的筛选,有可能为ARP请求目的地址为全F,可能为ARP应答目的地址和当前主机对应上了,所以这是就要看OP选项,去查看是应答还是请求,是应答就获取想知道的目的IP地址;是请求的话,提取目的IP地址查看是否与当前主机的IP地址相同,如果相同,构建应答将本主机MAC地址填入,并发送。
不知道对方的MAC地址,每次都要发送ARP请求,很麻烦,所以当发送过一次ARP请求之后,路由器或者主机就会维护一个ARP缓存表,其中建立MAC地址与IP地址的映射。
这就是我的主机维护的ARP缓存表。
如果知道MAC地址想知道对方的IP地址,我们可以使用RARP协议,道理与ARP协议相似。
3.DNS协议
DNS是一整套从域名映射到IP的系统。
我们访问其他网站时并不是直接输入IP地址来访问网页,我们会输入网址来访问网站。这全凭DNS的协助。TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆.。于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系。
我们通过ping www.baidu.com,可以观测到他的IP地址
通过这个IP地址也可以访问百度。
说明www.baidu.com与112.80.248.75之间建立了映射,当你在输入框输入www.baidu.com,通过DNS协议自动会转换为112.80.248.75。为什么不加端口号,因为浏览网页服务默认的端口号都是80。输入www.baidu.com会自动填写为www.baidu.com:80。
DNS是应用层协议,底层使用UDP进行解析,浏览器会缓存DNS结果。
我们可以通过dig命令查看域名解析的过程。
①dig的版本号
②status:NOERROR表示解析成功
③QUESTION SECTION表示解析的网址
④ www.baidu.com被解析为www.a.shifen.com,再次将www.a.shifen.com解析成两个IP地址。
⑤结果统计, 包含查询时间和 DNS 服务器的地址。
4.认识MTU
MTU相当于发送包裹,对包裹尺寸的限制。这个限制是不同的链路层对应的物理层产生的限制。
以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位。
最大值为1500为以太网的最大传输单元,不同的网络类型MTU。
如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation)。
不同的数据链路层标准的MTU是不同的。
5.MTU对UDP的影响
UDP的头部为8字节,IP的头部为20字节,所以UDP的数据一旦超过1472字节(1500-8-20),就需要在网络层进行分片。那么就会在网络层分成多个IP数据报。这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在网络层被分片, 整个数据被丢失的概率就大大增加。
6.MTU对TCP的影响
TCP的数据报也不能无限大,还是受制于MTU,TCP数据报的单个最大长度称为MSS。
TCP在建立连接的时候会进行MSS协商。
最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的 MTU)。 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。然后双方得知对方的MSS值之后, 选择较小的作为最终MSS. MSS的值就是在TCP首部的40字节变长选项中(kind=2)。
MSS与MTU的关系:
使用ip -4 addr来查看MTU
7.代理服务器
代理服务器(Proxy Server)的功能是代理网络用户去取得网络信息。
像在学校中使用校园网,我们的访问请求就会经过代理服务器。
这种属于正向代理。可以
①对特定的请求进行拦截,过滤一些请求
②进行身份认证
③提高效率
④保护内网资源
这属于反向代理服务器。作用有:
①使集群中的服务器负载均衡
②保证内网的安全(建立黑名单、白名单)
③提高网站性能