计算机网络学习笔记

前言

一个web狗,网络知识十分欠缺,需要饿补,虽然学校课程也有计算机网络(与我无关)这门课,但肯定满足不了我的学习进度,下面是学习《网络是怎样连接的学习》这本书的笔记

0x01

image.png

我直接切入主题吧,个人把web方面的讲清楚,其实理解即可。
从访问一个url开始,浏览器通过解析器向DNS服务器发出查询,通过DNS解析过来的ip,然后委托操作系统内部的网络控制软件向这个目标 IP地址,也就是我们要访问的 Web 服务器发送消息了,这里说的网络控制软件也就是协议栈。协议栈按照指定的顺序来调用Socket库中的程序组件,建立一条数据通道,数据沿着这条通道流动,最终到达目的地。
image.png

0x02

五层:应用层、传输层、网络层、数据链路层、物理层,每一层都有一些常用的协议
应用层:HTTP,DNS,SNMP,TELNET,FTP,SMTP
传输层:TCP、UDP
网络层:ip、arp、icmp
而数据能够准确传达靠的就是这些协议的支持,经过每一层会在包里面添加一些控制信息,已确保包能够准确传到目的地。

0x03

首先浏览器向web服务器发送请求,生成的HTTP被协议栈接受,接着建立TCP连接
TCP建立连接需要经过三次握手,具体原理百度。
TCP断开连接需要经过四次握手,具体原理百度。
在传输层,会在数据包前面加一些TCP头部控制信息,看是否建立连接,在windows可以用命令行

1
netstat -ano | findstr TCP

image.png

image.png

0x04

经过传输层,进入网络层,也就是IP模块,IP 模块接受 TCP 模块的委托负责包的收发工作,它会生成 IP 头部并附加在 TCP 头部前面。
image.png
image.png

0x05

生成了 IP 头部之后,接下来 IP 模块还需要在 IP 头部的前面加上MAC 头部,获得目的地的mac地址需要用到arp,它其实很简单,在以太网中,有一种叫作广播的方法,可以把包发给连接在同一以太网中的所有设备。ARP 就是利用广播对所有设备提问:”×× 这个 IP 地址是谁的?请把你的 MAC 地址告诉我。”然后就会有人回答:“这个 IP 地址是我的,我的 MAC 地址是××××。”
image.png
image.png
image.png

0x06

网卡驱动从 IP 模块获取包之后,会将其复制到网卡内的缓冲区中,然后向MAC 模块发送发送包的命令。接下来就轮到 MAC 模块进行工作了。首先,MAC 模块会将包从缓冲区中取出,并在开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列。
image.png

0x07

最后转化为电信号在传播,返回包正好相反,一步一步拆包

-------------本文结束感谢您的阅读-------------