计算机网络-小林coding-IP篇
本系列笔记为作者在跟随小林coding学习的时候做的笔记。感谢小林大大。加上自己的笔记
IP 基础知识全家桶
前菜 —— IP 基本认识
网络层实现主机与主机之间的通信,也叫点对点(end to end)通信
MAC 的作用则是实现「直连」的两个设备之间通信,而 IP 则负责在「没有直连」的两个网络之间进行通信传输
源IP地址和目标IP地址在传输过程中是不会变化的(前提:没有使用 NAT 网络),只有源 MAC 地址和目标 MAC 一直在变化
主菜 —— IP 地址的基础知识
32 位 IP 地址以每 8 位为组,共分为 4 组,每组以「.」隔开
IP 地址的分类
网络号和主机号
广播地址:主机号全 1
- 在本网络内广播的叫做本地广播
- 在不同网络之间的广播叫做直接广播
无分类地址 CIDR
a.b.c.d/x,其中 /x 表示前 x 位属于网络号, x 的范围是 0 ~ 32
子网掩码:将子网掩码和 IP 地址按位计算 AND,就可得到网络号
子网划分:将主机地址分为两个部分(子网网络地址和子网主机地址)
公有 IP 地址与私有 IP 地址

IP 地址与路由控制

环回地址是不会流向网络:127.0.0.1 作为环回地址,localhost 的主机名。数据包不会流向网络。
IP 分片与重组
数据包大小大于 MTU 时, IP 数据包就会被分片

某个分片丢失,则会造成整个 IP 数据报作废
TCP 引入 MSS 在 TCP 层进行分片不由 IP 层分片,对于 UDP 尽量不要发送一个大于 MTU 的数据报文
IPv6 基本认识
128位,每 16 位作为一组,每组用冒号 「:」隔开
- IPv6 自动分配IP地址,即插即用。
- IPv6 包头包首部长度采用固定的值 40 字节,去掉了包头校验和,简化了首部结构,减轻了路由器负荷,大大提高了传输的性能。
- IPv6 有应对伪造 IP 地址的网络安全功能以及防止线路窃听的功能,大大提升了安全性。
IPv4 首部与 IPv6 首部

点心 —— IP 协议相关技术
DNS

DHCP

NAT

NAT 穿透技术
客户端主动从 NAT 设备获取公有 IP 地址,然后自己建立端口映射条目,然后用这个条目对外通信,不需要 NAT 设备来进行转换
ICMP

ping 的工作原理
IP协议的助手 —— ICMP 协议

ping —— 查询报文类型的使用
使用了 ICMP 里面的 ECHO REQUEST(类型为 8 ) 和 ECHO REPLY (类型为 0)

traceroute —— 差错报文类型的使用
-
故意设置特殊的 TTL,来追踪去往目的地时沿途经过的路由器
-
故意设置不分片,从而确定路径的 MTU

断网了,还能 ping 通 127.0.0.1 吗?
能ping通,回环地址数据包直接交给软件本地网卡触发软中断,不交给真网卡
图中右边是tcp数据包,画错了

ping回环地址和ping本机地址有什么区别
ping回环地址和ping本机地址没有区别,都走 lo0,本地回环接口,也就是前面提到的**“假网卡”**
127.0.0.1 和 localhost 以及 0.0.0.0 有区别吗
如果服务器 listen 的是 0.0.0.0,那么此时用127.0.0.1和本机地址都可以访问到服务
0.0.0.0会监听本机的所有网卡,如果使用固定网卡地址只能监听该网卡地址的数据包,详见通用技术本地测试地址的区别
网段地址判断
通过abc类地址判断网段范围
详见笔记