第二章 网络分层的真正含义

Q:在TCP三次握手的时候,IP层和MAC层在干嘛?
A:TCP 发送每一个消息,都会带
着 IP 层和 MAC 层了。因为,TCP 每发送一个消息,IP 层和 MAC 层的所有机制都要运行一
遍。而你只看到 TCP 三次握手了,其实,IP 层和 MAC 层为此也忙活好久了。
只要是网络上跑的包,都是完整的。可以有下层没上层,不可能只要上层没下层。
第三章 ifconfig
- 查看IP地址的命令:windows是ipconfig,Linux是ifconfig
- 网关是邮电局,所有的信息必须通过这里的打包、封箱、寻址,才能发出去与收进来;网卡是设备(网卡地址就是mac地址),也就是邮电局邮筒,你家的信箱;而网桥是邮递员,但他只负责一个镇里面(局域网)不负责广域网。
- IP地址是一个网卡在网络世界的通讯地址,相当于门牌号。比如10.100.122.2,地址被分割成四个部分,每个部分8个bit,一共32位。这样产生的IP数量很快不够,于是使用IPV6,一共128位。
ping:验证IP是否可达,测试到目标机器的连通性
eg:ping imoopc.com
telnet:Telnet协议是TCP/IP协议族的其中之一,指定ip是否开放指定端口的
eg:telnet imooc.com 80 验证80端口是否可用
可能ping不通但端口可用,原因是可能有防火墙
IP与MAC的区别
- 地址使用不同:IP是Internet协议使用的地址,MAC是Ethernet协议使用的。
- 分配依据不同:IP地址基于网络拓扑(可以自动分配),MAC地址分配基于制造商(网卡出厂时就有全球唯一地址,很多验证软件是验证MAC的)
- 地址能否更改:IP可改,MAC可改,但一般用不上,除非要绕过软件验证
- 长度不同:IP32位,MAC48位
- 寻址协议层不同:IP第三层,网络层;MAC第二层,数据链路层,将数据帧从一个地点传到相同链路的另一个节点
- MAC地址更像身份证,局限在一个子网里,要跨子网需要IP地址,IP是地址,有定位功能,IP分共有和私有
第四章 IP怎么来的,怎么没的
- 配置IP地址
ip config或者ip addr命令
Q:旁边的机器都是 192.168.1.x,我非得配置一个 16.158.23.6,会出现什么现象呢?
A:包发不出去。
只要在网络上的包,不看只有上层没有下层,知道源IP和目标IP后发布出去包,因为没有MAC层。Linux的判断规则是,目标地址和我是否同一网段或和我的网卡是否为同一网段,是则发送ARP请求,获取MAC地址,如果是跨网段调用,不会直接将包发送至网络,而是企图将包发至网关。如果配置网关,Linux会获取网关的MAC地址,然后将包发送出去,对于192.168.1.6,虽然IP地址是它,但MAC不是它,所以网卡是不会将包收进去的。如果没有配置网关,包压根就发不出去。 -
动态主机配置协议DHCP(Dynamic Host Configuration Protocol)
管理员只需配置一段共享IP地址,每台机器都通过该协议来共享IP里申请,然后自动配置。相对于数据中心里的服务器IP配置好后基本不会变,相当于买房自己装修,DHCP相当于租房,别人帮你配置好,暂时用一下用完退租。
捕获.PNG
第五章 从物理层到MAC层:如何在宿舍自己组网玩联机游戏
- 物理层
用网线连接电脑与电脑,配置两台电脑的IP地址、子网掩码、默认网关,此时形成一个最小的局域网LAN。如果有第三个电脑,怎么连接?集线器(Hub),有多个口,可以连接多台电脑,不像交换机,集线器没有大脑,完全在物理层工作,它将自己收到的每一个字节发送给其他端口。 - 数据链路层
Hub采取广播模式,一个电脑发送的包每个电脑都能收到,问题来了:
1)包是发给谁的?谁收?
2)有没有先发后发的规则?
3)发错了怎么办?
以上问题都是数据链路层即MAC层解决的。
MAC(Medium Access Control媒体访问控制),控制先发后发的问题(问题2),防止混乱,规则是多路访问,有很多算法可以解决。
链路层地址即MAC地址解决问题1。有了目标MAC地址,数据包在链路上广播,MAC层的网卡才能发现该包是发给他的。MAC的网卡把包收进来,然后打开IP包,发现IP地址是自己的,再打开TCP包,发现端口是自己,也就是80,nginx也在监听80。于是将请求发给nginx,nginx返回一个网页,然后将内容发回请求的机器,层层封装,最后到MAC层。
对于以太网第二层后面是CRC也就是循环冗余检测。通过异或的算法,计算整个包在发送过程中是否发生错误,解决问题3。
延伸:如果机器数目增多,就需要交换机。因为Hub是广播的,不管其他接口是否需要,都会将所有bit发送出去,让主机判断是否需要,机器多冲突概率提高。每个口连接一台电脑,其IP和MAC基本不会变,只要记住该电脑MAC地址,如果木目标MAC不是本机器,就不用转发给这个口。交换机可以把MAC头拿下来,检查一下目标MAC地址,然后根据策略转发。交换机不断学习记录完善转发表,相当于缓存,一段时间内有效。
总结
第一,MAC 层是用来解决多路访问的堵车问题的;
第二,ARP 是通过吼的方式来寻找目标 MAC 地址的,吼完之后记住一段时间,这个叫作缓存;
第三,交换机是有 MAC 地址学习能力的,学完了它就知道谁在哪儿了,不用广播了。
第七章 ICMP与ping:投石问路的侦察兵
网络不通时,常常会想到ping,ping是如何工作的?
-
ICMP协议的格式
ping 是基于 ICMP 协议工作的。ICMP全称Internet Control Message Protocol,就是互联网控制报文协议。CMP 报文是封装在 IP 包里面的,ICMP 报文有很多的类型,不同的类型有不同的代码。最常用的类型是主动请求为 8,主动请求的应答为 0。
1553073402(1).jpg
-
查询报文类型
ping就是查询报文,是一种主动请求,并且获得了主动应答的ICMP协议。所以,ping 发的包也是符合 ICMP协议格式的,只不过它在后面增加了自己的格式,添加了标识符(有的侦查战况,有的查水源)、序号(派出的每个兵都有编号,去几个回几个判断战况),选项数据还会存放发送请求的时间,计算往返时间判断路途长短。 -
差错报文类型
举几个 ICMP 差错报文的例子:终点不可达为 3,源抑制为 4,超时为 11,重定向为 5。 -
ping:查询报文类型的使用
ping的接收和发送
假定主机 A 的 IP 地址是 192.168.1.1,主机 B 的 IP 地址是 192.168.1.2,它们都在同一个子网。那当你在主机 A 上运行“ping 192.168.1.2”后,会发生什么呢?
1)源主机构建一个ICMP请求数据包,含多个字段,最重要的有
类型字段和顺序号
2)由ICMP协议将数据包连同地址192.168.1.2一起交给IP层,IP层将以192.168.1.2为目的地址,本机IP作为源地址,加上些控制信息,构建一个IP数据包
3)加入MAC头。查询映射表或ARP协议得到MAC地址,由数据链路层构建一个数据帧,目的地址是IP层传过来的MAC地址,源地址是本机地址,还要加上一些附加信息,依据以太网的截止访问规则发送出去
4)B主机收到后先检查MAC地址和本机地址是否匹配, 是则接受,否则丢弃。接受后检查数据帧,将IP数据包从帧中提取出来,交给本机IP层,IP层检查后将有用信息提取交给ICMP协议
5)主机B构建一个应答包,发给A
6)在规定时间内,如果源主机没有收到ICMP的应答包,说明目标主机不可达,收到了说明可达。源主机会计算时间延时。
第八章:世界这么大,我想出网关
怎么在宿舍上网?
- 宿舍长两张网卡,一张插到宿舍交换机上,一张插到校园网网口
- 家庭路由器
网友评论