)
注图片来源--链接CSDN一、必备概念通过命令行终端查看自己的网络配置windowsipconfig /all 或者 ipconfigLinux:ifconfig笔记本的执行(部分)结果如下:MAC地址Media Access Control Address也称为局域网地址LAN Address以太网地址Ethernet Address或物理地址Physical AddressMAC地址用于在网络中唯一标示一个网卡.链路层中 MAC 地址长度为 48 位上图可见是60-DD-8E-FD-DD-74. 它是由网络设备制造商生产时烧录在网卡的EPROM。其中前 24 位60-DD-8E代表网络硬件制造商的编号后 24 位FD-DD-74是该厂家自己分配的一般表示系列号。只要不更改自己的 MAC 地址MAC 地址在世界是唯一的。形象地说MAC地址就如同身份证上的身份证号码具有唯一性。IP地址Internet Protocol Address网络层的IP协议是TCP/IP协议的核心所有的TCPUDPIMCPIGMP的数据都以IP数据格式传输。要注意的是IP不是可靠的协议这是说IP协议没有提供一种数据未传达以后的处理机制。每一台电脑同时有自己的 MAC 地址又有自己的 IP 地址只不过 IP 地址是软件层面上的可以随时修改MAC 地址一般是无法修改的。上图可见是IPv4地址为192.168.5.49。IPv4地址32位二进制数通常表示为4组十进制数每组0-255用点分隔IPv6地址128位二进制数通常表示为8组4位十六进制数用冒号分隔注这里查到的IP地址是内网IP不唯一而实际上互联网使用的公网IP才是唯一的运营商提供子网掩码255.255.255.0255 的部分是网络位小区名0 的部分是主机位房间号作用用与让电脑自动划分哪些 IP 跟你在同一个局域网一般来说连接同一个路由器/WIFI就是一个局域网而电脑可以通过IP地址和子网掩码自动判断。局域网里用交换机记录MAC即可。默认网关是访问互联网的必经之路相当于出小区的大门也就是你的路由器在局域网中的 IP 地址特殊情况路由器配置了网络隔离功能即虽然连同一个路由器但被逻辑隔离成两个局域网。同一个企业路由器划分多个逻辑网络VLAN 10: 192.168.10.x (财务部)VLAN 20: 192.168.20.x (研发部)VLAN 30: 192.168.30.x (访客)即使插同一个交换机不同 VLAN 互相隔离,通信流程:财务部电脑 (192.168.10.5) 想发文件给 研发部电脑 (192.168.20.8)1. 判断目标 IP 不在同一网段2. 发送到默认网关核心路由器3. 路由器查找路由表转发到 VLAN 204. 研发部电脑收到这里涉及到二层交换机和三层交换机的知识不详细说明提问如果一台电脑A连路由器能访问互联网另一台电脑B用网线连A可以知道A和B处于同一局域网但是B能不能访问互联网如果能网速和A的区别是什么回答A 当作 “虚拟路由器”把网络分享给 BB 就会获得 A 分配的内网 IP自动能上互联网。B 的速度 ≈ A 的速度但会慢一点点因为数据要多经过一层转发但是A 和 B 之间传文件超级快二、网络接口层TCP/IP 模型中的网络接口层 OSI 模型的物理层 数据链路层物理层 负责在物理媒介上传输原始的比特流0 和 1传输介质双绞线光纤同轴电缆Wifi蓝牙移动通信等数据链路层 在直连的两个设备间传输数据帧功能封装成帧Framing- MAC寻址-错误检测CRC 校验-流量控制-访问控制ARP协议我们知道目标的 IP 地址但以太网传输需要 MAC 地址 ARP Address Resolution Protocol地址解析协议作用IP 地址 → MAC 地址注ARP 协议只在【同一个局域网】内使用电脑 A: IP: 192.168.1.10 MAC: AA:AA:AA:AA:AA:AA 电脑 B: IP: 192.168.1.20 MAC: BB:BB:BB:BB:BB:BB (A 不知道) 步骤 1检查 ARP 缓存 A 查找本地 ARP 表有 192.168.1.20 的 MAC 吗 没有 → 步骤 2广播 ARP 请求 ┌────────────────────────────────────────┐ │ 谁有 192.168.1.20告诉 AA:AA:AA:AA:AA:AA │ │ 广播到局域网所有设备 │ └────────────────────────────────────────┘ 步骤 3电脑 B 响应 ┌────────────────────────────────────────┐ │ 我是 192.168.1.20MAC 是 BB:BB:BB:BB:BB:BB │ │ 单播回复给 A │ └────────────────────────────────────────┘ 步骤 4电脑 A 缓存 A 收到响应存入 ARP 缓存 192.168.1.20 → BB:BB:BB:BB:BB:BB 步骤 5开始通信 现在可以用 MAC 地址直接通信了✅ 同一局域网同一网段 → 二层交换机查 MAC 表转发✅ 不同网络不同网段 → 需要路由器/三层交换机三、网络层网络接口层负责的是局域网之间的通信网络层负责把数据从一个局域网送到另一个局域网最终送到全世界任何一台设备管的是跨网段、跨路由器、跨城市、跨国的寻址与路由。网络层最关键的就是IP协议特殊 IP 地址0.0.0.0- 表示本机或任意地址- 用于路由表默认路由 - 服务器绑定 0.0.0.0 表示监听所有接口 127.0.0.0/8回环地址- 127.0.0.1 通常表示 localhost - 用于本机内部通信不经过网卡255.255.255.255- 受限广播地址- 不会被路由器转发- 只能在同一局域网内广播路由 将数据包从源网络转发到目的网络的过程路由器 工作在网络层的设备 - 根据 IP 地址和路由表做转发决策 - 连接不同的网络实现逐跳转发路由器只看IP地址不看MAC隔离广播ARP 过不去IP 协议负责寻址、分段、传输寻址确定数据包的发送者和接收者即源IP和目标IP同网络直接发送不同就发给网关分段不同网络的 MTU最大传输单元不同当数据包 MTU 时必须分段传输1路由决策过程选择从源到目的地的最佳路径生成和维护路由表2转发执行过程根据路由表将数据包发送到下一跳不可靠、无连接只管发不管丢没丢32位IP地址分为网络位和地址位这样做可以减少路由器中路由表记录的数目有了网络地址就可以限定拥有相同网络地址的终端都在同一个范围内那么路由表只需要维护一条这个网络地址的方向就可以找到相应的这些终端了。在一个子网IP协议头八位的TTL字段。这个字段规定该数据包在穿过多少个路由之后才会被抛弃。某个IP数据包每穿过一个路由器该数据包的TTL数值就会减少1当该数据包的TTL成为零它就会被自动抛弃。IP协议并不是一个可靠的协议它不保证数据被送达保证数据送达的工作应该由其他的模块来完成。ICMP(网络控制报文)协议是IP层的协议。当传送IP数据包发生错误。比如主机不可达路由不可达等等ICMP协议将会把错误信息封包然后传送回给主机。给主机一个处理错误的机会这也就是为什么说建立在IP层以上的协议是可能做到安全的原因。Ping 是 ICMP 中的一个命令主要用于测试网络连接的可达性和响应时间。当你使用 Ping 命令时它会发送一个 ICMP 回显请求消息到目标主机。如果目标主机可达并且没有防火墙阻止 ICMP 消息它会回复一个 ICMP 回显应答消息。Ping 工具会记录从发送请求到收到应答所花费的时间以此来评估网络延迟NAT Network Address Translation网络地址转换定义将一个 IP 地址域映射到另一个 IP 地址域的技术简单说把私有 IP 地址转成公网 IP 地址解决了IPv4地址不够用的问题即给家庭或公司分配 1 个公网 IP或几个内部使用私有 IP通过 NAT 共享这一个公网 IP。NAT 带来的问题NAT 不允许外部主动连接内网设备破坏端到端连接增加复杂性和延迟IP 地址真实性丧失解决方法使用IPv6四、传输层网络层是主机到主机而传输层是进程到进程进程间通信端口 应用程序的门牌号 作用在一台主机上标识不同的应用程序格式16 位数字0-65535 示例 192.168.1.10:80传输层找进程通过IP定位主机通过端口号定位进程套接字Socket IP 地址 端口号{源IP, 源端口, 目标IP, 目标端口, 协议}- {192.168.1.10, 54321, 142.250.189.46, 443, TCP}主机 AIP 192.168.5.49浏览器进程端口 8080主机 B百度服务器IP 220.181.38.253HTTP 服务进程端口 80通信就是192.168.5.49:8080 ↔ 220.181.38.253:80Socket 包含了网络层IP 传输层端口TCP协议特点 - 面向连接三次握手建立连接四次挥手关闭连接 - 可靠传输确认、重传 - 有序传输序列号 - 面向字节流 - 全双工通信 - 流量控制滑动窗口 - 拥塞控制│ 第一次客户端告诉服务器自己的 seqx │ 第二次服务器告诉客户端自己的 seqy确认收到 x │ 第三次客户端确认收到 yUDP协议特点 - 无连接不需要握手 - 不可靠不保证到达 - 轻量级头部小 - 快速无复杂机制五、应用层传输层虽然实现了从主机A的a1进程到主机B的b1进程通信但是它只负责把一段一段的数据可靠地从 A 传到 B。应用层数据说明书即通过应用层协议定义数据怎么传、怎么解析DNS Domain Name System域名系统 作用将域名转换为 IP 地址HTTP Hypertext Transfer Protocol超文本传输协议 作用在客户端和服务器之间传输超文本HTML、图片、视频等HTTPS HTTP TLS/SSL Hypertext Transfer Protocol Secure 作用安全的 HTTP 通信1. HTTP/1.0最原始一次请求 → 开一个 TCP 连接 → 用完就关缺点连接不能复用慢得离谱2. HTTP/1.1用了十几年的主流长连接Connection: keep-alive一个 TCP 连可以发多个请求缺点队头阻塞一个请求卡住后面全卡住同一域名最多开 68 个连接明文不安全3. HTTP/2快很多多路复用一个 TCP 连接同时并发很多请求二进制分帧不再是文本头部压缩解决了 HTTP/1.1 队头阻塞4. HTTP/3最新革命性底层不用 TCP 了用 UDP QUIC彻底解决队头阻塞0-RTT 握手更快切换网络WiFi ↔ 4G/5G不断线六、socket编程待更新同一局域网同一网络但是被隔离不同网络