IP基础知识
IP概念
IP是英文 Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。
IP作用
IP位于TCP/IP参考模型的第三层网络层,实现主机与主机之间的点对点通信,例:
IP与MAC地址
- IP负责在没有直连的两个网络之间进行数据通信
- MAC负责实现直连的两个设备之间的通信
区别:
- MAC地址的长度为48位(6个字节);而IP地址为32位。
- MAC地址应用在OSI第二层,即数据链路层;IP地址应用于OSI第三层,即网络层。
- MAC地址的分配是基于制造商;IP地址的分配是基于网络拓朴。
IP地址的构成
IP地址(IPv4)由32bit二进制组成,使用点分十进制表示,8个bit为一组,共4组,使用点分割,大概支持43亿设备连接,如:
实际IP地址是以网卡为标准进行配置
IP地址的分类
- IP地址 = 网络号(网段地址)+主机号(主机地址)
- 网络号:设备所在区域的唯一标识,网络号相同的设备允许相互通信
- 主机号:同一网段中不同设备的唯一标识,不允许重复
- IP地址共分为5类:A类、B类、C类、D类、E类,如:
地址的第一个字段的十进制值
主机数 = 2的主机号位数的次方-2(全0和全1)
- A类:1-126 ,16777214台主机,如:10.1.2.3,A类地址的范围为:1.0.0.1-126.255.255.254
- B类:128-191,65534 台主机,如:144.12.3.77,B类IP地址的范围:128.0.0.1-191.255.255.254
- C类:192-223,254台主机,如:192.168.1.1,C类IP地址的范围:192.0.0.1-223.255.255.254
特殊IP地址
网络地址
作用:标识网络唯一位置及名称
计算:网络地址 = 网络号+0 组成
例1:ip=192.168.1.125 C类 net:host 3:1 网络地址=192.168.1.0
例2:ip=16.1.3.8 A类 net:host 1:3 网络地址=16.0.0.0
注意:网络地址不同的设备不能相互通信
广播地址
- 本地广播:用于同一个链路中相互连接的主机之间发送数据包
本地广播地址通过 255.255.255.255 发送
- 直接广播地址:在不同网路之间进行的广播,对方的IP网络号+255,如:
- 多播地址:将数据包发送给网络中特定组的所有主机,如:
多播使用D类地址,从 224.0.0.0~239.255.255.255 范围内进行多播,划分为三类:
224.0.0.0~224.0.0.255 预留的组播地址,只能用于局域网LAN中,路由器不转发
224.0.1.0~238.255.255.255 组播地址,用于 internet
239.0.0.0~239.255.255.255 为本地管理组播地址预留,供网络内部使用
回环地址
同一台计算机内的程序之间进行网络通信时使用的默认地址,使用127.0.0.1作为标准默认回环地址,与回环地址具有相同意义的主机名称为 localhost,使用该ip及主机名时,数据包不会流向网络
本地IP地址
作用:本地LAN内部使用的IP地址
区间:192.168.x.x 或 10.x.x.x
IP地址的优缺点
优点:简单明了,使用方便
缺点:
- 同一个网络下没有层次划分,缺少灵活性
- 不能很好的与现实网络匹配
子网掩码
组成:与IP地址相同,32bit组成,点分十进制表示,如:255.255.255.0
子网掩码中0映射的IP地址表示主机,1映射的IP地址表示网络:
ip:192.168.1. 234
netmask: 255. 255.255.0
作用
网络地址与主机地址分离:网络地址 = IP 地址 AND 子网掩码 ,例:
192.168.129.10 1100 0000 0000 1010
& 255.255.255.0 1111 1111 0000 0000
net:192.168.129.0
子网划分
子网划分
IP地址 = 网络号 + (子网地址 + 子网主机号)
默认子网掩码:A类 255.0.0.0 B类 255.255.0.0 C类 255.255.255.0
子网划分原则:子网掩码二进制状态下将表示主机的0更改为1,原来表示主机的数据现在表示子网,如:
255.255.255.0 1111 1111 1111 1111 1111 1111 00 00 0000
改为:255.255.255.192 1111 1111 1111 1111 1111 1111 11 00 0000
1111 1111 1111 1111 1111 1111表示网络号,11表示子网号,00 0000表示主机号
例1:有网络地址192.168.1.0 ,子网掩码为255.255.255.192,分析网络构成:
第一点:划分几个子网:2的n次方 n:子网掩码的0变为1的个数,当前示例:2的2次方 -> 4 个子网
第二点:每个子网的合法主机数:2的n次方-2 n:子网掩码中剩余0的个数,当前示例:2的6次方-2 -> 62 台
第三点:每个合法的子网号:
ip: 1111 1111 1111 1111 1111 1111 xx xx xxxx
netmask 1111 1111 1111 1111 1111 1111 11 00 0000
2个1 则IP地址最后一个字节的可能数据:
- 00 00 0000 -> 0
- 01 00 0000 -> 64
- 10 00 0000 -> 128
- 11 00 0000 -> 192
合法的子网号:
- 192.168.1.0
- 192.168.1.64
- 192.168.1.128
- 192.168.1.192
第四点:每个子网的广播地址:下一子网号-1
- 第一个子网广播地址:192.168.1.63
- 第二个子网广播地址:192.168.1.127
- 第三个子网广播地址:192.168.1.191
- 第四个子网广播地址:192.168.1.255
第五点:每个子网合法的主机号范围:掐头去尾
- 第一个子网主机地址:192.168.1.1~192.168.1.62
- 第二个子网主机地址:192.168.1.65~192.168.1.126
- 第三个子网主机地址:192.168.1.129~192.168.1.190
- 第四个子网主机地址:192.168.1.193~192.168.1.254
例2:有网络地址192.168.1.0 , 子网掩码为255.255.255.240,分析网络构成:
子网掩码的二进制表示:1111 1111 1111 1111 1111 1111 1111 0000
第一点:划分几个子网:2的n次方 n:子网掩码的0变为1的个数,当前示例:2的4次方 -> 16 个子网
第二点:每个子网的合法主机数:2的n次方-2 n:子网掩码中剩余0的个数,当前示例:2的4次方-2 -> 14 台
第三点:每个合法的子网号:
ip: 1111 1111 1111 1111 1111 1111 xx xx xxxx
netmask 1111 1111 1111 1111 1111 1111 1111 0000
2个1 则IP地址最后一个字节的可能数据:
- 0000 0000 -> 0
- 0001 0000 -> 16
- 0010 0000 -> 32
- 0011 0000 -> 48
- 0100 0000 -> 64
- 0101 0000 -> 80
- 0110 0000 -> 96
- 0111 0000 -> 112
- 1000 0000 -> 128
- 1001 0000 -> 144
- 1010 0000 -> 160
- 1011 0000 -> 176
- 1100 0000 -> 192
- 1101 0000 -> 208
- 1110 0000 -> 224
- 1111 0000 -> 240
合法的子网号:
- 192.168.1.0
- 192.168.1.16
- 192.168.1.32
- 192.168.1.48
- 192.168.1.64
- 192.168.1.80
- 192.168.1.96
- 192.168.1.112
- 192.168.1.128
- 192.168.1.144
- 192.168.1.160
- 192.168.1.176
- 192.168.1.192
- 192.168.1.208
- 192.168.1.224
- 192.168.1.240
第四点:每个子网的广播地址:下一子网号-1
- 第一个子网广播地址:192.168.1.15
- 第二个子网广播地址:192.168.1.31
- 第三个子网广播地址:192.168.1.47
- 第四个子网广播地址:192.168.1.63
- 第五个子网广播地址:192.168.1.79
- 第六个子网广播地址:192.168.1.95
- 第七个子网广播地址:192.168.1.111
- 第八个子网广播地址:192.168.1.127
- 第九个子网广播地址:192.168.1.143
- 第十个子网广播地址:192.168.1.159
- 第十一个子网广播地址:192.168.1.175
- 第十二个子网广播地址:192.168.1.191
- 第十三个子网广播地址:192.168.1.207
- 第十四个子网广播地址:192.168.1.223
- 第十五个子网广播地址:192.168.1.239
- 第十六个子网广播地址:192.168.1.255
第五点:每个子网合法的主机号范围:掐头去尾
- 第一个子网主机地址:192.168.1.1~192.168.1.14
- 第二个子网主机地址:192.168.1.17~192.168.1.30
- 第三个子网主机地址:192.168.1.33~192.168.1.46
- 第四个子网主机地址:192.168.1.49~192.168.1.62
子网掩码精简表示法
- 结构:IP地址/子网掩码二进制中1个数
- 例:192.168.1.0/24 24表示子网掩码有24个1,一共32位,剩余位0,则十进制:255.255.255.0
公有IP与私有IP
- 公有IP地址是由固定组织部门统一分配,互联网范围中必须唯一
- 私有IP地址是在LAN中自行分配使用,可以重复
- 公有IP地址是由ICANN(互联网名称与数字地址分配机构)组织下的IANA负责分配互联网的IP地址,按照洲划分,中国是由CNNIC机构管理,如:
IPv6
原因:IPv4是32位,提供的地址数量不足
IPv6地址是128bit二进制组成,以16位一组,每组使用冒号分割,若出现连续的0,可以省略并用两个冒号隔开(一个IP地址只允许出现一次2个连续的冒号),如: fe80::22da:22ff:fe7a:2a87
特点
IPV4与IPv6 不能兼容
IPv6可以自动分配IP地址,不需要DHCP服务器支持,实现即插即用
IPv6数据包的包头采用固定的40字节长度,去掉了包头校验等简化了包头结构,减轻了路由器的符合,提高传输速度
IPv6地址:单播地址(一对一)、组播地址(一对多)、任播地址 ,没有广播地址,如:
IP的分片与重组
原因:由于数据链路层到达的目的不同,且每种链路最大的传输单元不同,则导致IP数据报发送时需要分片接收时需要重组
MTU:数据链路层的最大传输单元,如图:
重组:IP数据报在目的主机完成片段重组,可能出现乱序、丢失的现象,路由器不负责重组,如:
IP地址与路由控制
路由转发原理:IP数据报到达路由器时,路由器根据数据报的目的地址来查询路由表,根据查询结果将数据报转发给下一投递路径,该过程称为IP路由
分析:
- 主机A将IP数据报发送给直连路由器1
- 路由器1收到后,计算目的地址的网络地址拿到路由表中查询,得到转发结果为:10.1.0.2即路由器2
- 路由器2收到后,查询路由表找到匹配项,最终转发给目的主机10.1.2.1,结束通信
路由表
路由表记录IP数据报在下一跳应该转发的地址
跳:Hop,它是网络的一个区间,IP数据报在网络中跳跃转发,在每一个区间决定IP数据报的下一条路径即为路由算法,图:
路由表生成方式有两种,一种为手动设置即静态路由,另一种为路由器之间通过交换信息自行刷新的称为动态路由(OSPF)
ARP(Address Resolution Protocol)
作用:将IP地址解析为MAC地址
工作原理:
ARP请求:主机通过广播发送ARP请求,如:
ARP响应:当链路中所有设备收到ARP请求后,会拆开ARP请求包,若其中目的IP与自己IP相同则就将本机的MAC地址塞入ARP响应包中返回给发送方主机,图:
更新ARP缓存表:主机A收到ARP响应包后将主机C的IP地址与MAC地址记录到ARP缓存表中,下次在发送数据时,直接读取缓存信息
查询命令:arp -a
RARP:将已知MAC地址转为IP地址
MAC地址
作用:用来确认网络设备位置的位址
组成:使用48bit二进制组成,十六进制表示,使用横杠作为间隔符,两两一组,如:20-da-22 - 7a-2a-87,其中,20-da-22为厂商识别码 7a-2a-87为内部识别码,IP地址的分配基于网络的拓扑结构,而MAC地址的分配基于制造商。
MAC地址直接写入(烧录)在网卡的rom芯片中,只读属性,原则上不可修改,用于LAN中表示目的设备位置
DNS域名解析
作用:
- 域名管理
- 域名解析:将域名网址转换为IP地址
域名管理
使用层级关系管理组织域名系统
地址名称解释: http:// www . baidu . com / index.html。其中,http:为协议名,www . baidu . com为域名,index.html为目录及文件名+
域名中越靠右侧的域名级别越高
最右侧为根域即顶层,使用树状组织关系:如:com 商业组织 gov 政府部门 edu 教育机构 cn 中国
域名解析
- 作用:由于域名对于使用者来说使用方便但计算机设备不识别,IP地址计算机识别但不方便人使用和记忆,则就有一组即独立又协作服务器来完成域名地址与IP地址的转换
- 解析方式:递归解析、反复解析
- 工作流程
- 本地处理:浏览器查看缓存是否有域名与IP映射关系,若没有则向操作系统缓存要,若还没有则检查本机域名hosts文件,若无信息则向DNS服务器提出查询(hosts文件位置:C:\Windows\System32\drivers\etc)
- 外网查询:客户端向本地DNS服务器发出DNS请求->服务器收到请求查询本机缓存,若有则返回,若无此信息则向上级DNS服务器提出请求->……->本地DNS将IP地址返回给客户端,客户端与目的建立连接
DHCP协议
作用:动态获取IP地址
DHCP客户端使用68号端口,DHCP服务器使用67端口监听
工作原理:四步
- 客户端发起DHCP请求,由于客户端无IP地址也不知道DHCP服务器的IP地址,则通过UDP广播(255.255.255.255)发送请求
- DHCP服务器收到请求后,依然通过广播将相应信息(IP、网关、掩码等)发送给网络
- 客户端收到后,向服务器发送确认信息,并回显配置参数
- 最后服务端响应后应答后续参数
注意
- IP地址有租期概念,快到期时会重新发送请求报文,同意则延长租期
- DHCP响应时间比自行设置要慢
NAT技术
原因:IPV4的地址非常紧缺,使用NAT地址转换方法缓解地址耗尽问题
作用:NAT可以将私有地址转换为公有地址,如:
实际使用中使用IP地址+端口号一起进行转换,NAT变为NAPT(网络地址与端口转换协议),图:
- 图中两个客户端192.168.1.10 与192.168.1.11同时与服务器183.232.231.172进行通信,两个客户端端口号都是1025
- 此时,两个私有ip都需要转换为公有IP(120.229.175.121),通过公有地址的不同端口号来区分
- 路由器生成NAPT转换表,使用同一个公有IP和不同端口号与私有IP进行映射,实现通信
ICMP
互联网控制报文协议
作用:确认IP数据报是否成功到达目的地址、提供错误报告、改善网络设置
例:
- 主机A向主机B发送数据报,由于某些原因路由器2未发现主机B的存在,此时路由器2会向主机A发送一个ICMP目标不可到达数据报,说明发送未成功
- 路由器2返回ICMP数据报时会通过路由器1转发,最后到达目的主机A
- 主机A收到后分解ICMP的首部信息及数据信息已得知发生的具体问题
ICMP报文的类型
- 诊断查询类型(查询报文类型)
- 通知出错原因类型(差错报文类型)
ping命令
- 因特网包探索器命令,用于测试网络连接,ping命令发送一个ICMP请求,判断目的设备能否应答。
- 格式: ping 目的IP地址 或 ping 目的域名
- 参数:
- TTL:生存时间,由发送主机设置,不同操作系统数值不同,以防止数据报在网络中永不终止的循环发送,转发一次会减1
- time:一次请求时间,数值越小速度越快
- 丢包率:网络负载及健康程度
ISO/OSI网络参考模型
- 网络协议分层模型意义:为了解决通信,由于一次性实现较难,则分步来解决,每一个步骤使用最恰当的技术来实现,所有步骤都完成则通信即可实现
OSI协议模型
一共分为七层
是一种互联、开放、参考模型,是一种框架式的、指南性的协议,具体实现细节并未说明,是指定其它协议的参考
物理层
- 作用:连接不同的物理设备,传输比特流(二进制),为上层协议提供一个传输数据的可靠物理媒体
- 设备:
- 中继器(repeater):放大器,对传输数据信号进行再次放大,延长传输距离,放大次数要受到限制
- 集线器:连接局域网中的不同设备(多端口的中继器)
数据链路层:
作用:在物理层基础上提供可靠的数据投递服务,完成差错控制、流量控制、物理地址寻址等功能
传输数据的单位:帧,如:
目的和源地址:MAC地址(6B)
类型:标识上层协议(2B)
数据:封装数据内容(1500B)
CRC:循环冗余校验(4B)
网络层
实现两个端系统之间的数据传输,实现路由选择、连接建立、释放、终止等
重要设备:路由器(router),涉及到的协议:
传输层
提供端到端的连接,透明的传输报文,将数据可靠的传送到相应端口
端口:使用2Bit对应用程序编号,范围:0-65535,图:HTTP 80 FTP 21 POP3 110
协议:TCP UPD
应用层:为操作系统或网络应用程序提供访问接口
各层功能及协议总图
TCP/IP协议(四层)
OSI协议与TCP/IP协议的映射关系:
TCP/IP各层包含的子协议:
网络层IP数据报的结构
IP数据报功能分析
版本:占用4b,表示IP的版本号,一般有IPV4 和 IPV6
头部长度:占用4b,表示数据报报头的长度,没有可选项的数据报报头长度为20B
总长度:占16b,表示整个数据报的长度,最大65535B
标识:占16b,用于分片及重组,同一个分片的标识是相同
标志:占3b,表示分片的信息,含义:
分片偏移:占13b,表示分片在整个数据报的位置,以便于重组
生存时间:占8b,表示数据报可以经过的中转路由器数量,每经过一个路由器TTL会减1,变为0时会丢弃数据报,避免数据报无限传播
协议:占8b,表示上一层所使用的的协议(TCP/UDP)
头部校验和:占16b,用来校验数据报的报头是否损坏
源地址:占32b,表示发送端的IP地址
目的地址:占32b,表示接收端的IP地址
可选项:很少使用
填充:若没有可选项,报头长度不是32b的整数倍,则需要向填充字段填充数据,保证为32b的整数倍
TCP报文、IP数据报、数据帧的关系:
TCP协议的三次握手
- 作用:建立连接
名词解释
- seq:序列号,占4B,标记数据段顺序
- SYN:请求同步序列号,当SYN=1 , ACK=0 时表示建立连接,握手完毕后会清零
- ack:序列确认号,占4B,表示期望接收到的下一个字节的编号
- ACK:标志确认号,占1b,仅当ACK=1时,ack字段才有效
过程
- 第一次握手:建立连接时客户端向服务器端发送SYN=1包,等待服务器确认(客户端说:我请求建立连接)
- 第二次握手:服务器端收到了SYN包,此时再次发送确认信息表明客户端的SYN包已收到(服务器端说:我收到了你发送建立连接的请求,我可以建立连接)
- 第三次握手:客户端收到服务器的SYN确认包,再次向服务器发送ACK确认包,次包发送完毕,两端都进入连接成功状态,开始发送数据(客户端说:收到了你可以建立连接的消息,那就开始吧)
TCP协议的四次挥手
- 作用:释放连接
- 过程
- 第一次挥手:客户端发送释放连接报文,随后客户端进行半关闭状态,停止客户端向服务端方向的信息发送,但任然可以接收服务端传过来的信息(客户端说:我请求释放连接)
- 第二次挥手:服务器端确认客户端的请求已收到,服务器端进半关闭(服务器端说:收到,你需要释放连接请求我知道了)
- 第三次挥手:发送剩余数据,做好服务器端到客户机端方向上的连接释放准备(服务器端说:剩余数据已发送完毕,可以关闭连接了)
- 第四次挥手:客户机确认服务器已做好释放连接准备,客户端等待2MSL后结束(客户端说:收到,再见)
UDP协议
用户数据报协议,是一种面向无连接、不可靠的数据投递服务,没有拥塞控制的一种报文传输协议
TCP与UDP应用区别:
TCP报文格式:
UDP报文格式:
TCP UDP区别
TCP | UDP | |
---|---|---|
定义 | 传输控制协议 | 用户数据报协议 |
连接方式 | 需要建立连接,形成传输数据的通道 | 不需要建立连接,将数据源和目的封装到数据包中 |
数据传输的大小 | 数据大小不受限制 | 数据大小限制在 64K 之内 |
安全性 | 通过三次握手完成连接,可靠,安全送达 | 无需建立连接,故不可靠 |
效率性 | 必须建立连接,故效率低 | 速度快 |
Socket
- Socket就是为网络服务提供的一种机制
- 通信的两端都是Socket
- 网络通信其实就是Socket间的通信
- 数据在两个Socket间通过IO传输
- Socket 抽象层是位于应用层和传输层之间的一层
- 可以只传送数据本身而不用进行XML封装,大大降低数据传输的开销(JSON)
- Socket允许使用长连接,允许应用程序运行在异步模式(提高效率),只有在需要的时候才接收数据
- 常用的两种Socket类型
- **流式Socket (SocK_STREAM)**:流式是一种面向连接的Socket,针对于面向连接的TCP服务应用
- **数据报式Socket (SOcK_DGRAM)**:数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用
- 常用的两种Socket类型