IP地址的分类
IP地址分为5类: A类,B类,C类,D类,E类
如何划分的?
根据IP地址的前八位来区分
A类: 0开头 0xxx xxxx 0 - 127(实际上是 1 - 126)
掩码:255.0.0.0 允许的主机数量就多 为2*2^24
B类: 10开头 10xx xxxx 128 - 191
掩码:255.255.0.0 允许的主机数量就多 为2*2^16
C类: 110开头 110x xxxx 192 - 223
掩码:255.255.255.0 允许的主机数量就多 为2*2^8
D类: 1110开头 1110 xxxx 224 - 239
E类: 1111开头 1111 xxxx 240 - 255
A B C三类 为单播地址 特点:既可以成为源IP,也可以成为目标IP
D类 为组播地址 特点:只能作为目标IP使用
E类 为保留地址
单播: 一对一的通讯
组播: 一对多的通信(同一个组播组)但是需要配置组,需要给特定的一部份人发消息,就可以把它们从逻辑上划分为一个组,之后给这个组发送消息,就只有在组里面的能收到
广播: 一对所有(同一个广播域)。所有电脑在同一广播域,但如果有其它电脑在这个广播域,这个信息对于他们来说就是垃圾信息,会浪费计算机的运算能力。
特殊IP地址
- 127.0.0.1 - 127.255.255.254 环回地址
- 255.255.255.255 受限广播地址(被路由器限制)只能作为目标IP使用
- 主机位全1 直接广播地址 只能作为目标IP使用 掩码为255.255.255.0 ip为192.168.72.255 这个2551就是
- 主机为全0 代表的是一个网段,也称为网络号,是一个范围
- 0.0.0.0 可以代表没有地址 可以代表所有地址
- 169.254.0.0/16 自动私有地址 获取不到ip地址时,会自动在这个范围内找一个先用着,是个网段,不是具体的一个ip
电脑上不了网的解决思路
- ipconfig看自己有没有ip
- ping自己的IP地址,看能不能通,不能通再ping环回地址127.0.0.1,如果通,则可能物理网卡有问题,通不了,可能就系统有问题
- ping自己的网关
- ping与自己在同一广播域的ip
VLSM 可变长子网掩码 子网划分
做法:
看需求,需要划分出几个网段,加入需要划分3个网段,2^2 = 4,3在4的范围内,所以我们需要把主机位的前两位拿来加入网段
例一:
将192.168.1.0/24 划分出2个网段
因为2^1 = 2,所以我们拿主机位的前第一个用来划分网段
例二:
172.16.0.0/16 划分出7个网段:
因为2^3 = 8,7在8的范围内,我们就需要拿主机位的前三个来划分
主机位全为0,不能用 要加一
CIDR 无类域间路由 用于汇总
诀窍: 取相同,去不同
去不同:要把不同的那一位 展开写成2进制
例一:
超网: 上面的例子就是超网 原本的网络位(192开头的为C类网 掩码默认为/24) /24 之后变为 /22,而且网络位扩大,这种叫超网
汇总:
172开头的为B类网,掩码默认为/16,之后可能通过子网划分变成了 /24 ,但之后又汇总为 /22
OSI模型
开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model)
OSI参考模型的核心思想:分层
属于同一层面的不同功能,其目的和作用相似或相近。
不同层面的功能及目的和作用都具有明显的差异。
每一次都在下面一层提供的服务的基础上在提供增值服务。
分层的作用:
- 更易于标准化
- 降低层次之间的关联性
- 便于学习理解
七层:
应用层
抽象语言到编码
表示层
编码到二进制
会话层
维持网络应用和应用服务器之间的会话连接
传输层
实现端到端的传输 -- 端口号 -- 会话层地址 取值范围:1-65535 (2^16) 其中1-1023称为知名端口号 用于区分不同会话地址
网络层
进行逻辑地址寻址,实现不同网络之间的路径选择
数据链路层
逻辑链路控制层(LLC)-- 在数据末尾增加一个校验和(FCS 帧校验序列,确保数据完整性 CRC 循环冗余算法)
介质访问控制层(MAC) 二进制到电信号
物理层
处理电信号
TCP/IP协议簇
TCP/IP 四层模型 — TCP/IP标准模型
TCP/IP 五层模型 — TCP/IP对等模型
下面都是以五层模型来说的
与OSI对比
PDU 协议数据单元
在分层网络结构,例如在开放式系统互联(OSI)模型中,在传输系统的每一层都将建立协议数据单元(PDU)。PDU包含来自上层的信息和当前层的实体附加的信息,这个PDU会被传送到下一较低的层。物理层实际以一种编帧的位流形式传输这些PDU,这些PDU由协议栈的较高层建造。接收系统自下而上传送这些分组通过协议栈,并在协议栈的每一层分离出PDU中的相关信息。
L1PDU
L2PDU
…
L7PDU
封装与解封装
封装 数据加工的过程,把最重要信息的添加进数据包里面
解封装 拆解数据包
应用层
HTTP(超文本传输协议)-- TCP协议 80端口
FTP(文件传输协议)-- TCP协议 20/21
TELNET(远程连接协议)-- TCP 23
DHCP(动态主机配置协议)-- UDP 67/68
DNS(域名解析协议)-- UDP/TCP 53
TFTP(简单文件传输协议)-- UDP 69
HTTPS(HTTP + SSL/TLS)–TCP 443
传输层 需要封装端口号 TCP UDP
- TCP是面向连接的协议,UDP是无连接的协议
- TCP的传输是可靠的,UDP的传输不太可靠
- TCP可以分段,UDP不行
- TCP可以实现流控,UDP不行
- TCP传输速度较慢,消耗资源较大;UDP传输速度快,消耗资源小
TCP UDP使用场景
- TCP适用于效率要求较低,但准确性要求较高的场景
- UDP适用于效率要求较高,但准确性要求较低的场景
网络层 需要封装IP地址 IP协议
数据链路层 需要封装MAC地址 以太网协议 以太网:早期局域网的解决方案,主要依赖MAC地址进行寻址,以太网主要工作在1,2层
什么是面向连接?
面向连接就是指设备在传输之前,先使用预备的协议建立点到点的连接,再传输数据
以太网 II 型帧
- 前导码(Preamble):由0、1间隔代码组成,用来通知目标站作好接收准备。
- 目标地址(Destination Address):表示接收帧的工作站的地址,各占据6个字节。目标地址可以是单址,也可以是多点传送或广播地址。
- 源地址( Source Address):表示发送的工作站的地址,各占据6个字节。
- 类型(Type):指定接收数据的高层协议类型。
- 数据(Data):在经过物理层和逻辑链路层的处理之后,包含在帧中的数据将被传递给在类型段中指定的高层协议。该数据段的长度最小应当不低于46个字节,最大应不超过1500字节。如果数据段长度过小,那么将会在数据段后自动填充(Trailer)字符。相反,如果数据段长度过大,那么将会把数据段分段后传输。
- 帧校验序列(FSC):包含长度为4个字节的循环冗余校验值(CRC),由发送设备计算产生,在接收方被重新计算以确定帧在传送过程中是否被损坏。
TCP的头部
16位端口号: 告知主机该报文段是来自哪里(源端口Source Port)以及传给哪个上层协议或应用程序(目的端口Destination Port)的。进行TCP通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名服务端口号(比如DNS协议对应端口53,HTTP协议对应80,这些端口号可在/etc/services文件中找到)。
32位序号: 一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向上的字节流的每个字节的编号。假设主机A和主机B进行TCP通信,A发送给B的第一个TCP报文段中,序号值被系统初始化为某个随机值ISN(Initial Sequence Number,初始序号值)。那么在该传输方向上(从A到B),后续的TCP报文段中序号值将被系统设置成ISN加上该报文段所携带数据的第一个字节在整个字节流中的偏移。例如,某个TCP报文段传送的数据是字节流中的第1025~2048字节,那么该报文段的序号值就是ISN+1025.另外一个传输方向(从B到A)的TCP报文段的序号值也具有相同的含义。
32位确认号(acknowledgement number):用作对另一方发送来的TCP报文段的响应。其值是收到的TCP报文段的序号值加1。假设主机A和主机B进行TCP通信,那么A发送出的TCP报文段不仅携带自己的序号,而且包含对B发送来的TCP报文段的确认号。反之,B发送出的TCP报文段也同时携带自己的序号和对A发送来的报文段的确认号。
4位头部长度(header length):标识该TCP头部有多少个32bit字(4字节)。因为4位最大能标识15,所以TCP头部最长是60字节。
6位标志位包含如下几项:
URG标志,表示紧急指针(urgent pointer)是否有效。
ACK标志,表示确认号是否有效。我们称携带ACK标识的TCP报文段为确认报文段。
PSH标志,提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间(如果应用程序不将接收到的数据读走,它们就会一直停留在TCP接收缓冲区中)。
RST标志,表示要求对方重新建立连接。我们称携带RST标志的TCP报文段为复位报文段。
SYN标志,表示请求建立一个连接。我们称携带SYN标志的TCP报文段为同步报文段。
FIN标志,表示通知对方本端要关闭连接了。我们称携带FIN标志的TCP报文段为结束报文段。
16位窗口大小(window size):是TCP流量控制的一个手段。这里说的窗口,指的是接收通告窗口(Receiver Window,RWND)。它告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。
16位校验和(TCP check sum):由发送端填充,接收端对TCP报文段执行CRC算法以检验TCP报文段在传输过程中是否损坏。注意,这个校验不仅包括TCP头部,也包括数据部分。这也是TCP可靠传输的一个重要保障。
16位紧急指针(urgent pointer):是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一字节的序号。因此,确切地说,这个字段是紧急指针相对当前序号的偏移,不妨称之为紧急偏移。TCP的紧急指针是发送端向接收端发送紧急数据的方法。
TCP头部选项: TCP头部的最后一个选项字段(options)是可变长的可选信息。这部分最多包含40字节,因为TCP头部最长是60字节(其中还包含前面讨论的20字节的固定部分)。
伪头部校验: 校验网络层中12个字节的内容,32位源IP,32目标IP,8位保留,8位协议,16位总长度
UDP头部
头部结构中各部分的作用:
- 16位源端口号 记录源端口号,在需要对方回信时选用。不需要时可用全0。
- 16位目的端口号 记录目标端口号。这在终点交付报文时必须要使用到。
- UDP长度 UDP数据报的长度(包括数据和首部),其最小值为8B(即仅有首部没有数据的情况)。
- 校验和检测UDP数据报在传输中是否有错,有错就丢弃。该字段时可选的,当源主机不想计算校验和,则直接令该字段为全0。当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交给进程。如果接收方UDP发现收到的报文中目的端口号不正确(即不存在对应端口号的应用进程),就丢弃该报文,并由ICMP发送“端口不可达”差错报文交给发送方。