### IP 协议
IP是Internet Protocol(网际互连协议)的缩写,是[TCP/IP](https://baike.baidu.com/item/TCP%2FIP/214077)体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决[互联网](https://baike.baidu.com/item/%E4%BA%92%E8%81%94%E7%BD%91/199186)问题,实现大规模、[异构网络](https://baike.baidu.com/item/%E5%BC%82%E6%9E%84%E7%BD%91%E7%BB%9C/1306810)的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据[端到端](https://baike.baidu.com/item/%E7%AB%AF%E5%88%B0%E7%AB%AF/8851783)的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据报传输服务。
##### **IP的作用**
* IP信息包的传送 : 可将IP信息包从源设备传送到目的设备。
* **IP定址**
> IP规定网络上所有的设备都必须有一个独一无二的IP地址,每个IP信息包都必须包含目的设备的IP地址。
* **IP路由**
> 网络之间必须有传送的机制,可以传送IP信息包,将IP信息包通过一个个的网络传送到目的地。此种传送机制称为IP路由。
* IP信息包的分割与重组 : 为了克服数据包在网络传输过程中大小的先知,可以将过长的信息包进行分割,以便能在最大传输单位较小的网络上传输。分割后的IP信息包,由目的设备接收后重组,恢复成原来IP信息包。
##### **IP的组成**
* 网络标识 : 标明具体的网段 相同是同一网段,可ping通 ;
* 主机标识 : 标明具体的某个节点,也就是某个网络中的特定的计算机号码 (不允许在同一个网段内重复出现)。
![](https://img.kancloud.cn/32/91/329133c4e75e0e2576e217fef3d0ce1b_640x554.jpeg)
> 下图为利用目标 IP 地址的网络标识进行判断
![](https://img.kancloud.cn/82/ee/82ee6d9fe27e531ce49bd443565f3488_640x345.jpeg)
##### **路由**
含义: 仅仅有`IP`地址还不足以实现将数据包发送到对端目标地址,在数据发送过程中还需要类似于`指明路由器或主机`的信息,以便真正发往目标地址。保存这种信息的就是`路由控制表`。
1. 静态路由控制
* 管理员手动设置
2. 动态路由控制
* 路由器与其他路由器相互交换信息时自动刷新
##### **IP地址与路由控制**
1. `IP`地址的网络标识部分用于进行路由控制。
2. 路由控制表中记录着网络地址与下一步应该发送至路由器的地址。
3. 在发送`IP`包时,首先要确定`IP`包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将 IP 包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择一个最为吻合的网络地址。
![](https://img.kancloud.cn/65/df/65df22c20b661bfe38283303f502e1a3_640x517.jpeg)
**`DNS`**
`DNS` 可以根据下面字符串帮助用户转换到具体的 IP 地址。
* 2001:4860:4860::8888 (IPV6)
* 114.114.114.114 (IPV4)
参考链接
[51cto - Java技术架构](https://developer.51cto.com/art/201906/597961.htm)
- 版本控制之Git简介
- Git工作流程
- Git工作区、暂存区、版本库
- Git 指令汇总
- Git 忽略文件规则 .gitignore
- pull request
- HTTP简介
- HTTP - Keep-Alive
- HTTP缓存
- XMLHttpRequest
- Fetch
- 跨域
- HTTP 消息头
- TCP/IP
- TCP首部
- IP首部
- IP 协议
- TCP/IP漫画
- 前端开发规范
- 前端开发规范整理
- 前端未来规划
- HTML思维导图
- CSS思维导图
- 布局
- position,float,display的关系和优先级
- line-height、height、font-size
- 移动端适配
- JS 对象
- JS 原型模式 - 创建对象
- JS 预编译
- 探索JS引擎
- ES