第四章.IP协议

IP(Internet Protocol,网际协议),作为整个TCP/IP中至关重要的协议,主要负责将数据包发送给最终的目标计算机。因此,IP能够让世界上任何两台计算机之间进行通信。

一、IP基础知识

IP三大块:IP寻址、路由、IP分包和组包。

1.路由控制(Routing)

路由控制是指将分组数据发送到最终目标地址的功能

三个重点:
①跳(Hop):一跳是指利用数据链路层以下分层的功能传输数据帧的一个区间,它是主机或路由器网卡不经其他路由器而能直接到达的相邻主机或路由器网卡之间的一个区间
②多跳路由:每一个区间(跳)在转发IP数据包时会分别制定下一跳的操作,直至包达到最终的目标地址,而不是一次性给出所有通路。
③路由控制表:记录IP数据在下一步应该发给哪个路由器,从路由控制表可以了解目标地址的方向。

2.数据链路的抽象化

问题:不同的数据链路最大的区别就是它们各自的最大传输单位(MTU:Maxinum Transmission Unit)不同。IP的上一层可能会要求传送比这些MTU更多字节的数据,因此必须在线路上传送比包长还要小的MTU。

解决方法:IP进行分片处理(IP Fragmentation)。将较大的IP包分成多个较小的IP包,到达对端目标地址后再组合起来。对于IP的上层来说,完全忽略了数据包在各个数据链路层中的MTU,实现了数据链路层的抽象。

3.IP协议相关

①IP地址属于网络层地址,在TCP/IP中通信的所有主机或路由器必须设定自己的IP地址。
IP面向无连接。(因此TCP采用面向有连接型,提高了可靠性)

二、IP地址

1.IP地址的定义

①IP地址(IPv4)长度为32位,8位一组,分成4组。
10101100 00010100 0000001 00000001 —> 172.20.1.1
一台主机至少可以设置一个以上的IP地址,一台路由器可以设置两个以上的IP地址,一块网卡也可以设置两个以上的IP地址

2.网络标识和主机标识

①网络地址在数据链路的每个段配置不同的值
相同段内相连的主机必须有相同的网络地址,主机标识不允许在同一网段内重复出现
IP包的路由过程中利用的是目标IP地址的网络标识,而不需要使用主机标识。

3.IP地址分类

级别 范围 网络标识长度 主机标识长度 一个网段内可容纳的主机地址上限
A类地址 0.0.0.0~127.0.0.0 1~8位 9~32位 16,777,214个(2^24-2)
B类地址 128.0.0.0~191.255.0.0 1~16位 17~32位 65,534个(2^16-2)
C类地址 192.0.0.0~223.255.255.0 1~24位 25~32位 254个(2^8-2)
D类地址 224.0.0.0~239.255.255.255 1~32位 没有主机标识

4.广播与多播

广播地址用于在同一个链路中相互连接的主机之间发送数据包。
将IP地址中的主机地址部分全部设置为1就成了广播地址。

两种广播方式:1.本地广播,本网络内,不会传播到其他链路上;2.直接广播,可以发送到其他的数据链路上(因为安全问题,多数情况下路由器会被设置为不转发)。

单播、广播、多播通信:

多播使用D类地址,因此开头是“1110”的IP地址就可以认为是多播地址。

5.子网掩码

子网掩码出现的目的:节省网络资源,通过子网网络地址细分出比A类、B类等更小粒度的网络。

表示方式:
IP地址:172.20.100.52(前26位为网络地址)
子网掩码:255.255.255.192 或 172.20.100.52/26

CIDR(无类型域间选路):可以将连续多个地址划分到一个较大的网络内,通过路由器几种降低了路由器的负担。

VLSM(可变长子网掩码):可以随机修改组织内各个部门的子网掩码长度的机制,提高IP地址的利用率。

6.全局地址与私有地址

私有地址的范围:
①10.0.0.0 ~ 10.255.255.255 (10/8)         A类
②172.16.0.0 ~ 172.31.255.255 (172.16/12)    B类
③192.168.0.0 ~ 192.168.255.255 (192.168/16)   C类

NAT技术:实现私有IP和全局IP的互相转换,实现了配有私有地址的主机与配有全局地址的互联网主机之间的通信。

三、路由控制

书中的两幅图已经非常好的概括了路由控制的过程和路由控制表的聚合过程了。

路由控制过程:

路由控制表的聚合:

四、IPv4首部

结构(从前往后排列) 长度(比特) 概述
版本 4 IPv4的版本号为4
首部长度(IHL) 4 表明IP首部大小,单位为4字节,默认为20字节
区分服务 8 表明服务质量,每一位都有具体含义,比如0、1、2三位表示优先度
总长度 16 IP包最大长度为2^16-1=65535字节
标识(ID) 16 用于分片重组
标志(Flags) 3 表示包被分片的相关信息,每一位都有具体含义
片偏移 13 标识被分片的每一个分段相对与原始数据的位置
生存时间(TTL) 8 指包可以中转多少个路由器,每经过一个路由器,
协议 8 IP传输层的上层协议编号,比如1代表ICMP
首部校验和 16 校验数据报的首部,不校验数据部分
源地址 32 表示发送端IP地址
目标地址 32 表示接收端IP地址
可选项 长度可变 实验或诊断时使用,包含安全级别、时间戳等信息
填充 长度可变 用于填充首部到32比特的整数倍(字段填充0)
数据 -- 存入数据,将IP上层协议的首部也作为数据进行处理

图解TCP/IP读书笔记(四)的更多相关文章

  1. 图解TCP/IP读书笔记(二)

    图解TCP/IP读书笔记(二) 第二章.TCP/IP基础知识 一.TCP/IP出现的背景及其历史 年份 事件 20世纪60年代后半叶 应DoD(美国国防部)要求,美国开始进行通信技术相关的研发 196 ...

  2. 图解TCP/IP读书笔记(一)

    图解TCP/IP读书笔记(一) 第一章 网络基础知识 本学期的信安概论课程中有大量的网络知识,其中TCP/IP占了相当大的比重,让我对上学期没有好好学习计算机网络这门课程深感后悔.在老师的推荐下开始阅 ...

  3. 图解TCP/IP读书笔记(三)

    第三章.数据链路 数据链路层是计算机网络最基本的内容. 数据链路层的协议定义了通过通信媒介互连的设备之间传输的规范. 一.数据链路相关技术 1.MAC地址 关于MAC地址的几个要点: ①MAC地址长度 ...

  4. # 图解TCP/IP读书笔记(五)

    第五章.IP协议相关技术 IP旨在让最终目标主机收到数据包,但是在这一过程中仅仅有IP是无法实现通信的,因此还有需要作为为IP的辅助的各种协议支持. 协议 作用 特点 DNS(Domain Name ...

  5. TCP/IP读书笔记(4) IPv4和IPv6 路由选择

    TCP/IP读书笔记(4) IPv4和IPv6 路由选择 网络层是位于链路层之上,TCP/IP模型中网络层的核心协议是IP协议(Internet protocol). 目前主流的IP协议是IPv4(I ...

  6. 《图解TCP/IP》第四章

    <图解TCP/IP>第四章 4.1 IP 即网际协议 4.1.1 IP(IPv4.IPv6)相当于OSI参考模型中的第3层-网络层 4.1.2 数据链路层和网络层的关系: 数据链路层的主要 ...

  7. 《图解TCP/IP》笔记

    OSI参考模型 协议分层 为什么需要分层? 简化网络协议. 每一层只需要衔接上下层的服务. 利于模块化开发. 解耦. 分层的问题 过分模块化.提高数据处理的开销. OSI参考模型 作用及意义 将复杂的 ...

  8. 《图解tcp/ip》读书笔记(二)

    <图解tcp/ip>读书笔记(二) 本周主要阅读的是本书的第三章--数据链路. 当然了,从某些角度讲,我认为这一章就是计算机网络的最基本的内容之一.整章讲述了数据链路层的作用和相关技术,主 ...

  9. 读书笔记——《图解TCP/IP》(1/4)

    读书笔记——<图解TCP/IP>(1/4) 经典摘抄 第一章 网络基础知识 1.独立模式:计算机未连接到网络,各自独立使用的方式. 2.广域网 WAN 局域网 LAN 城域网 MAN 3. ...

随机推荐

  1. Qt窗体关闭时,如何自动销毁窗体类对象

    Qt窗体关闭时,如何自动销毁窗体类对象     要对你的窗口设置WA_DeleteOnClose属性,默认的情况下关闭窗口仅仅意味着隐藏它 ImgWindow1->setAttribute(Qt ...

  2. PB中获取datawindow提交的sql语句

    PB的群里边,有人问的到这个问题,查了一下,综合了两条回答,得到了答案 1.DW 控件的SQLpreview 事件里的sqlsyntax 参数即是 2.pb一般使用占位符优化SQL语句,也就是你看到的 ...

  3. cocos2dx中如何从一张图片中切割一部分显示成小图片

    1.通常我们拿到的资源中,通常都是许多张小图片压缩到一张图片里了,我们如何在使用的时候把它切割出来呢? 2.例如我们要把上面这张图片按组分隔开来 CCSprite* newGameNormal = C ...

  4. Java团队项目总结

    Java团队项目总结 1.项目实现情况 项目概述: 我们团队项目准备实现一个有关于大富翁有的游戏程序. 大富翁游戏,以经营权为主要的游戏方式,通过购买经营权与架构经营的星级服务来获得最大的利益,当其他 ...

  5. gameObject, vector and transform

    调用其它组件中成员 通过GameObject(游戏物体). Base class for all entities in Unity scenes.  是Unity场景里面所有实体的基类. 可以理解为 ...

  6. Oracle窗口函数显示想要的行数

    Oracle中支持窗口函数ROW_NUMBER(),其用法和 MSSQLServer2005中相同,比如我们 执行下面的 SQL语句: SELECT * FROM ( SELECT ROW_NUMBE ...

  7. 1.项目开发-->Memcached之ASP.NET实现

    1.Memcached安装 第一步:下载windows稳定版Memcached 1.2.1 win32,解压后,将memcached.exe文件放到自己想存放的盘符内,例如C:\Windows\Sys ...

  8. Spring MVC 学习笔记 data binding

       最近在实验Spring的时候遇到了一个问题: SEVERE: Servlet.service() for servlet [DispatcherServlet] in context with ...

  9. Java多线程——<八>多线程其他概念

    一.概述 到第八节,就把多线程基本的概念都说完了.把前面的所有文章加连接在此: Java多线程——<一>概述.定义任务 Java多线程——<二>将任务交给线程,线程声明及启动 ...

  10. Leetcode#140 Word Break II

    原题地址 动态规划题 令s[i..j]表示下标从i到j的子串,它的所有分割情况用words[i]表示 假设s[0..i]的所有分割情况words[i]已知.则s[0..i+1]的分割情况words[i ...