5、物理层
综述:传输控制层准备了各种包,并且写了一个端口号的地址,外面包着网络层写了网关的地址和目标网络地址,在外面一层包着链路层根据网络层找的网关地址映射在本地的哪一个网卡mac地址上出去,然后多个下一跳到想要连接的服务端入口网关,然后打开里面一层找到进了入口之后的局域网中的哪一个IP(机器),然后根据端口找到对应的程序,交给他。(每一个下一跳改变的只是mac地址,不断到每个硬件网卡中,里面的目标IP地址和端口不变,所以不会迷路)
结论:TCP/IP协议,基于下一跳的机制,IP是两个端点间(从想发送请求的最开始的IP,到最后到达的终点,也就是无论怎么下一跳包内的IP地址是不会改变的),MAC地址是节点间的(每一跳之间的两个网卡的地址,也就是每一跳都会变)。
- netstat -natp命令查询各个端口都有什么进行了连接结果如下:
第一列代表tcp,第四列代表 本机的:端口,因为开的是node04标签所以当前IP是14,第五列是哪个IP的什么端口连接到了本机第四列的哪个端口,如图中192.168.150.1就是windows的IP,最后一列斜杠前为当前进程ID,斜杠后为解释,图中有个sshd的,ssh是远程连接,d代表后台服务
- 先建立一个连接口,tcp建立一个连接:
第一个命令中的$$代表当前的解释程序的id号,fd是文件描述符的意思,最后一个命令分割:8代表在上面那些文件描述符中创建一个为8的文件描述符,<>代表输入输出两个方向的,都指向后面的磁盘目录
- 再手动把GET / HTTP/1.0\n代表的意思发送到文件描述符8中再输出出去(由于此时8为baidu.com,就意味着给baidu.com发送一个连接)
最后一个命令中的8代表上面的文件描述符8,>代表输出出去的,&代表后面的8不是文件8,是文件描述符8,-e代表后面引号内的\n能被理解为换行,echo代表数据,引号内为http协议规定的request headers请求头的最小写法(在浏览器f12,network中的request headers中能看到类似的),GET代表是GET方式,/ 代表提供的资源,HTTP/1.0代表是http1.0的版本,换行符是必备的
- 连接baidu.com后返回的response header取得
cat读,0来自于8文件描述符,<代表输入,&意思代表8是文件描述符不是文件。读出来并打印
出现这个代表上面连接上baidu.com后下一步操作时间太长未操作了。
- 关闭文件描述符8:
8代表文件描述符,<输入,&代表8是文件描述符不是文件,后面还有个-
- 网络层内容解释
网卡信息文件,if代表interface,cfg为配置,eth是以太网的意思,0代表第一块网卡
IPADDR代表IP地址,NETMASK是掩码的意思,GATEWAY网关,DNS是远程服务器的地址,把你要去的地址给他,他给你返回个地址。
IP是一个点分字节,每个点隔开一个字节,(每个字节8个二进制位,全0-全1表示的最小最大十进制的数的范围是0-255),所以IP最大是255.255.255.255。
拿着IP地址和掩码会发生二进制的按位与运算,可以得出网络号(图中网络号最后为192.168.150.0)
上图这样可以打开路由表(第一个目标,第二个网关,第三个掩码,最后一个iface接口),可以看到第一行中目标网络显示的就是上上图中ip地址和掩码做按位与运算的结果,前两行的网关为0.0.0.0是因为当前网络跟150这个局域网中,所有这个局域网设备的连接不需要下一跳了,不用准备一个出去的网关,我们自己就可以连接,只有网和网之间才需要网关作为入口出口。
ping www.baidu.com打出后看到了time =这是数据包发出去到百度然后返回回来所用的时间,红框为百度的地址,如果我想到百度没人知道百度的地址,用红框的数字跟上面route -n出来的三行中的掩码依次做按位与运算(路由判定),只有最后一行的结果才跟目标地址一样(0跟谁与都是0),所以第三行有效,查询到了第三行的网关是192.168.150.2,知道了我的下一跳应该走192.168.150.2出去,这就是默认网关。
- 链路层内容解释
arp -a会显示链路表。
局域网中的每个IP在哪个网卡地址(图中有冒号的那一块)
北京马士兵教育学习笔记整理
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
Ending
Tip:由于文章篇幅有限制,下面还有20个关于MySQL的问题,我都复盘整理成一份pdf文档了,后面的内容我就把剩下的问题的目录展示给大家看一下
如果觉得有帮助不妨【转发+点赞+关注】支持我,后续会为大家带来更多的技术类文章以及学习类文章!(阿里对MySQL底层实现以及索引实现问的很多)
吃透后这份pdf,你同样可以跟面试官侃侃而谈MySQL。其实像阿里p7岗位的需求也没那么难(但也不简单),扎实的Java基础+无短板知识面+对某几个开源技术有深度学习+阅读过源码+算法刷题,这一套下来p7岗差不多没什么问题,还是希望大家都能拿到高薪offer吧。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中…(img-FVO7MAUX-1712781045191)]