Contents

计算机网络-小林coding-IP篇

本系列笔记为作者在跟随小林coding学习的时候做的笔记。感谢小林大大。加上自己的笔记

IP 基础知识全家桶

前菜 —— IP 基本认识

网络层实现主机与主机之间的通信,也叫点对点(end to end)通信

MAC 的作用则是实现「直连」的两个设备之间通信,而 IP 则负责在「没有直连」的两个网络之间进行通信传输

源IP地址和目标IP地址在传输过程中是不会变化的(前提:没有使用 NAT 网络),只有源 MAC 地址和目标 MAC 一直在变化

主菜 —— IP 地址的基础知识

32 位 IP 地址以每 8 位为组,共分为 4 组,每组以「.」隔开

IP 地址的分类

网络号和主机号

https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/IP/7.jpg

https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/IP/14.jpg

广播地址:主机号全 1

  • 在本网络内广播的叫做本地广播
  • 在不同网络之间的广播叫做直接广播

无分类地址 CIDR

a.b.c.d/x,其中 /x 表示前 x 位属于网络号, x 的范围是 0 ~ 32

子网掩码:将子网掩码和 IP 地址按位计算 AND,就可得到网络号

子网划分:将主机地址分为两个部分(子网网络地址和子网主机地址)

公有 IP 地址与私有 IP 地址

https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/IP/22.jpg

IP 地址与路由控制

https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/IP/25.jpg

环回地址是不会流向网络:127.0.0.1 作为环回地址,localhost 的主机名。数据包不会流向网络。

IP 分片与重组

数据包大小大于 MTU 时, IP 数据包就会被分片

https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/IP/26.jpg

某个分片丢失,则会造成整个 IP 数据报作废

TCP 引入 MSS 在 TCP 层进行分片不由 IP 层分片,对于 UDP 尽量不要发送一个大于 MTU 的数据报文

IPv6 基本认识

128位,每 16 位作为一组,每组用冒号 「:」隔开

  • IPv6 自动分配IP地址,即插即用。
  • IPv6 包头包首部长度采用固定的值 40 字节,去掉了包头校验和,简化了首部结构,减轻了路由器负荷,大大提高了传输的性能。
  • IPv6 有应对伪造 IP 地址的网络安全功能以及防止线路窃听的功能,大大提升了安全性。

IPv4 首部与 IPv6 首部

https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/IP/31.jpg

点心 —— IP 协议相关技术

DNS

https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/IP/33.jpg

DHCP

https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/IP/36.jpg

NAT

https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/IP/38.jpg

NAT 穿透技术

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

ICMP

https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/IP/41.jpg

ping 的工作原理

IP协议的助手 —— ICMP 协议

https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/ping/5.jpg

ping —— 查询报文类型的使用

使用了 ICMP 里面的 ECHO REQUEST(类型为 8 ) 和 ECHO REPLY (类型为 0)

https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/ping/17.png

traceroute —— 差错报文类型的使用

  1. 故意设置特殊的 TTL,来追踪去往目的地时沿途经过的路由器

  2. 故意设置不分片,从而确定路径的 MTU

https://cdn.xiaolincoding.com/gh/xiaolincoder/ImageHost/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/ping/18.jpg

断网了,还能 ping 通 127.0.0.1 吗?

能ping通,回环地址数据包直接交给软件本地网卡触发软中断,不交给真网卡

图中右边是tcp数据包,画错了

https://cdn.xiaolincoding.com//mysql/other/eb0963a11439dff361dbe0e7a8876abd.png

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类地址判断网段范围

详见笔记

 |