【笔记】网络协议
关于TCP四层模型:
只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层。比如ping的包里就没有应用层协议,但是必须有链路层。对 TCP 协议来说,三次握手也好,重试也好,只要想发出去包,就要有 IP 层和 MAC 层,不然是发不出去的。
精彩评论:我觉得可以用多重加密来举例,虽然也不是很贴切,两条地下党分支的领导要联系,每一层地下党都没有箱子的钥匙,他能做的就是给箱子加一个外壳,并上锁,对面同级的有同样的钥匙(私钥)
四层LB和七层LB
总结: 基于MAC地址玩的是二层(虚拟MAC地址接收请求,然后再分配到真实的MAC地址),
基于IP地址玩的是三层(虚拟IP地址接收请求,然后再分配到真实的IP地址),
基于IP地址加端口玩的是四层(虚拟IP+端口接收请求,然后再分配到真实的服务器)
基于URL玩的是七层.(虚拟的URL或主机名接收请求,然后再分配到真实的服务器)
第三讲:ifconfig:最熟悉又陌生的命令行
查看ip地址ip a
, ip addr
想象一下,你登录进入一个被裁剪过的非常小的 Linux 系统中,发现既没有ifconfig
命令,也没有 ip addr
命令,你是不是感觉这个系统压根儿没法用?这个时候,你可以自行安装net-tools iproute2
这两个工具。当然,大多数时候这两个命令是系统自带的。
curl查询公网出口IPcurl cip.cc
跟百度搜是一样的
不需要将十进制转换为二进制 32 位,就能明显看出 192.168.0 是网络号,后面是主机号。而整个网络里面的第一个地址 192.168.0.1,往往就是你这个私有网络的出口地址。例如,你家里的电脑连接 Wi-Fi,Wi-Fi 路由器的地址就是 192.168.0.1,而 192.168.0.255 就是广播地址。一旦发送这个地址,整个 192.168.0 网络里面的所有机器都能收到。
MAC 地址
在 IP 地址的上一行是 link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff,这个被称为MAC 地址,是一个网卡的物理地址,用十六进制,6 个 byte 表示。
MAC 地址是一个很容易让人「误解」的地址。因为 MAC 地址号称全局唯一,不会有两个网卡有相同的 MAC 地址,而且网卡自生产出来,就带着这个地址。很多人看到这里就会想,既然这样,整个互联网的通信,全部用 MAC 地址好了,只要知道了对方的 MAC 地址,就可以把信息传过去。
这样当然是不行的。一个网络包要从一个地方传到另一个地方,除了要有确定的地址,还需要有定位功能。而有门牌号码属性的 IP 地址,才是有远程定位功能的。
例如,你去杭州市网商路 599 号 B 楼 6 层找刘超,你在路上问路,可能被问的人不知道 B 楼是哪个,但是可以给你指网商路怎么去。但是如果你问一个人,你知道这个身份证号的人在哪里吗?可想而知,没有人知道。
MAC 地址更像是身份证,是一个唯一的标识。它的唯一性设计是为了组网的时候,不同的网卡放在一个网络里面的时候,可以不用担心冲突。从硬件角度,保证不同的网卡有不同的标识。
MAC 地址是有一定定位功能的,只不过范围非常有限。你可以根据 IP 地址,找到杭州市网商路 599 号 B 楼 6 层,但是依然找不到我,你就可以靠吼了,大声喊身份证 XXXX 的是哪位?我听到了,我就会站起来说,是我啊。但是如果你在上海,到处喊身份证 XXXX 的是哪位,我不在现场,当然不会回答,因为我在杭州不在上海。
所以,MAC 地址的通信范围比较小,局限在一个子网里面。例如,从 192.168.0.2/24 访问 192.168.0.3/24 是可以用 MAC 地址的。一旦跨子网,即从 192.168.0.2/24 到 192.168.1.2/24,MAC 地址就不行了,需要 IP 地址起作用了。**
第11讲 | TCP协议(上):因性恶而复杂,先恶后善反轻松
接下来有一些状态位。例如 SYN 是发起一个连接,ACK 是回复,RST 是重新连接,FIN 是结束连接等。TCP 是面向连接的,因而双方要维护连接的状态,这些带状态位的包的发送,会引起双方的状态变更。
还有一个重要的就是窗口大小。TCP 要做流量控制,通信双方各声明一个窗口,标识自己当前能够的处理能力,别发送的太快,撑死我,也别发的太慢,饿死我。
TCP 的连接建立,我们常常称为三次握手。
A:您好,我是 A。
B:您好 A,我是 B。
A:您好 B。