2022.2.20,这一周还是没咋学习,第一次连续加了三天班,每天九点五十到家只想躺床上炉石下棋了,下周开始尝试抽点时间出来,继续加油
一。简单分层结构
目前主要的结构为tcp/ip体系结构。从上到下依次为:应用层、传输层、网络层、接口层。
应用层
主要使用http、DNS、smtp协议
传输层
主要使用tcp、udp协议
网络层
主要使用ip协议
接口层
无协议,主要是提供接口与其他网络互联
总结
网络层的ip协议可使不同的网络接口互联,提供互联服务给tcp/udp协议。tcp为应用层协议提供可靠传输服务(比如http协议),udp则提供不可靠传输服务。
tcp提供服务时会建立可靠连接,udp则只管发送数据包。
二。复杂分层结构
第一节中的接口层,可以被拆分为物理层和数据链路层。从上到下讲起
应用层
在该层主要会组装通信内容,比如我要请求什么、我携带了什么(http出入参),组装为http报文
传输层
给http报文添加首部,标识是哪个进程(端口),组装为tcp报文
网络层
给tcp报文添加首部,标识目标主机地址(ip地址),组装为分组。到这里,ip:port和请求数据就出现了。
数据链路层
为分组添加首部,标识目标节点(mac地址);添加尾部,用于校验数据正误。组装为帧
物理层
将帧转为信号(比特流),发送到网络中
目标主机接收到信号后,会从下到上,在应用层最终解出http报文,完成操作,在从上到下封装为信号,发送回去,自此完成通信
三。通信原理简解
本节源于看数据链路层的时候,不明白为啥网络层有一个地址后,数据链路层又给了一个地址,由此引出了路由器、交换机等概念。
交换机
主要工作在数据链路层,内部维护mac地址–端口的映射表,解析比特流得到帧首部后,查询映射表,将帧再转为信号从对应端口发出去。
路由器
主要工作在网络层,本身拥有独立的mac地址,会连接多个交换机,可以将交换机的数据转发给其他交换机或路由器。一个路由器与其连接的交换机其实就构成了一个局域网。
路由器内会维护目的ip地址–子网掩码–端口的映射表。
ARP
第一次通信时,有对方IP地址但是没有目标MAC地址,该PC就会在网络层启动ARP协议生成一个ARP报文“我叫1.1,我的MAC是AA;谁是1.3,你的MAC是多少?”,该PC把报文广播出去,到交换机加上帧头帧尾。帧头的目标MAC是12个F进行广播,报文变为广播请求报文。交换机看到12个F就进行广播,所有人都收到。被广播接收方拿下帧头帧尾再查看3级ARP报文,看问的是谁,其他PC和网关发现找的不是自己就丢弃不给回应。
正确接收方接收到发现问的就是自己,就会给个回应,把自己的MAC地址写进去。因为知道是谁问的,所以此时回应不需要广播,这叫ARP单播应答。 PC收到单播应答后,就获取到对方MAC地址。并在自己电脑上生成ARP缓存表,该缓存表内就是别人的IP和别人的MAC地址。
如果路由器发现找的不是自己,不会再继续转发继续广播。交换机控制不了广播,路由器是天然控制二层广播的设备。广播到路由器永远出不去。
若想找和自己不在一个网段的用户,目标IP与自己不在同一个网段,就先找网关。广播报文就是“我是1.1,我的MAC地址是AA;谁是1.254,你的MAC地址是多少”,同理便获得网关的ARP缓存表。路由器专门根据目标IP进行路由
通过获取网关MAC地址,把信息成功地送到网关。再由网关把信息路由出去。
- 当一个信号从源主机发出后,它将到达默认网关–第一个路由器
- 第一个路由器解析信号获得ip地址后,将其与路由表中的每一项的子网掩码进行与运算,如果运算结果与路由项地址匹配,则根据下一跳地址转发。如果下一跳地址为直连地址,则通过当前端口转发,如果不是,查找下一跳地址对应的路由项(迭代查找),直到找到的路由项的下一跳地址就是直连地址。如果两个路由项的目的地址都匹配,选择子网掩码最长的那个。如果第一次就没有任何路由项能匹配,则丢弃,但是如果配置了缺省路由项,则根据缺省路由项转发。
- 数据到达一个端口后,端口根据arp协议解析ip地址,得到下一个mac地址,然后转发到该mac地址。首先检查ARP缓存表中是否有下一跳的MAC,如有则重新封装出去;如没有,则发送ARP请求广播报文获取下一跳的MAC,并记录到ARP缓存表中,再重新封装数据帧发送出去
- 第二、三。。。。N个路由器接收到数据后,重复该过程
- 直到路由器转发给了它这个局域网内的一个交换机,交换机再查询mac地址表,转发给主机上的某个网卡。
子网掩码
由四段十进制数组成
255.0.0.0
255.255.0.0
255.255.255.0
255.255.255.255
最右边的十位数表示可用主机数(主机编号),前三个十位数表示可用ip地址
通常,子网掩码越长(从左到右越大),能匹配的范围就会越小,就会越精确。