IP服务


IP基础知识

IP概念

IP是英文 Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。

IP作用

IP位于TCP/IP参考模型的第三层网络层,实现主机与主机之间的点对点通信,例:

image-20220811213511120

IP与MAC地址

  1. IP负责在没有直连的两个网络之间进行数据通信
  2. MAC负责实现直连的两个设备之间的通信

image-20220811213733503

区别:

  1. MAC地址的长度为48位(6个字节);而IP地址为32位。
  2. MAC地址应用在OSI第二层,即数据链路层;IP地址应用于OSI第三层,即网络层。
  3. MAC地址的分配是基于制造商;IP地址的分配是基于网络拓朴。

IP地址的构成

  • IP地址(IPv4)由32bit二进制组成,使用点分十进制表示,8个bit为一组,共4组,使用点分割,大概支持43亿设备连接,如:

    image-20220811213938970

  • 实际IP地址是以网卡为标准进行配置

    image-20220811214028305

IP地址的分类

  • IP地址 = 网络号(网段地址)+主机号(主机地址)
  • 网络号:设备所在区域的唯一标识,网络号相同的设备允许相互通信
  • 主机号:同一网段中不同设备的唯一标识,不允许重复
  • IP地址共分为5类:A类、B类、C类、D类、E类,如:

image-20220811214353778

地址的第一个字段的十进制值

主机数 = 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

注意:网络地址不同的设备不能相互通信

广播地址

  1. 本地广播:用于同一个链路中相互连接的主机之间发送数据包

image-20220811220224427

本地广播地址通过 255.255.255.255 发送

  1. 直接广播地址:在不同网路之间进行的广播,对方的IP网络号+255,如:

image-20220811220325855

  1. 多播地址:将数据包发送给网络中特定组的所有主机,如:

img

多播使用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地址的优缺点

优点:简单明了,使用方便

缺点:

  1. 同一个网络下没有层次划分,缺少灵活性
  2. 不能很好的与现实网络匹配

子网掩码

  • 组成:与IP地址相同,32bit组成,点分十进制表示,如:255.255.255.0

  • 子网掩码中0映射的IP地址表示主机,1映射的IP地址表示网络:

    ip:192.168.1. 234

    netmask: 255. 255.255.0

  • 作用

    1. 网络地址与主机地址分离:网络地址 = IP 地址 AND 子网掩码 ,例:

      image-20220812161326619

      ​ 192.168.129.10 1100 0000 0000 1010

      & 255.255.255.0 1111 1111 0000 0000

      net:192.168.129.0

    2. 子网划分

  • 子网划分

    1. IP地址 = 网络号 + (子网地址 + 子网主机号)

    2. 默认子网掩码:A类 255.0.0.0 B类 255.255.0.0 C类 255.255.255.0

    3. 子网划分原则:子网掩码二进制状态下将表示主机的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表示主机号

    4. 例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地址最后一个字节的可能数据:

        1. 00 00 0000 -> 0
        2. 01 00 0000 -> 64
        3. 10 00 0000 -> 128
        4. 11 00 0000 -> 192

        合法的子网号:

        1. 192.168.1.0
        2. 192.168.1.64
        3. 192.168.1.128
        4. 192.168.1.192
      • 第四点:每个子网的广播地址:下一子网号-1

        1. 第一个子网广播地址:192.168.1.63
        2. 第二个子网广播地址:192.168.1.127
        3. 第三个子网广播地址:192.168.1.191
        4. 第四个子网广播地址:192.168.1.255
      • 第五点:每个子网合法的主机号范围:掐头去尾

        1. 第一个子网主机地址:192.168.1.1~192.168.1.62
        2. 第二个子网主机地址:192.168.1.65~192.168.1.126
        3. 第三个子网主机地址:192.168.1.129~192.168.1.190
        4. 第四个子网主机地址:192.168.1.193~192.168.1.254
    5. 例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地址最后一个字节的可能数据:

        1. 0000 0000 -> 0
        2. 0001 0000 -> 16
        3. 0010 0000 -> 32
        4. 0011 0000 -> 48
        5. 0100 0000 -> 64
        6. 0101 0000 -> 80
        7. 0110 0000 -> 96
        8. 0111 0000 -> 112
        9. 1000 0000 -> 128
        10. 1001 0000 -> 144
        11. 1010 0000 -> 160
        12. 1011 0000 -> 176
        13. 1100 0000 -> 192
        14. 1101 0000 -> 208
        15. 1110 0000 -> 224
        16. 1111 0000 -> 240

        合法的子网号:

        1. 192.168.1.0
        2. 192.168.1.16
        3. 192.168.1.32
        4. 192.168.1.48
        5. 192.168.1.64
        6. 192.168.1.80
        7. 192.168.1.96
        8. 192.168.1.112
        9. 192.168.1.128
        10. 192.168.1.144
        11. 192.168.1.160
        12. 192.168.1.176
        13. 192.168.1.192
        14. 192.168.1.208
        15. 192.168.1.224
        16. 192.168.1.240
      • 第四点:每个子网的广播地址:下一子网号-1

        1. 第一个子网广播地址:192.168.1.15
        2. 第二个子网广播地址:192.168.1.31
        3. 第三个子网广播地址:192.168.1.47
        4. 第四个子网广播地址:192.168.1.63
        5. 第五个子网广播地址:192.168.1.79
        6. 第六个子网广播地址:192.168.1.95
        7. 第七个子网广播地址:192.168.1.111
        8. 第八个子网广播地址:192.168.1.127
        9. 第九个子网广播地址:192.168.1.143
        10. 第十个子网广播地址:192.168.1.159
        11. 第十一个子网广播地址:192.168.1.175
        12. 第十二个子网广播地址:192.168.1.191
        13. 第十三个子网广播地址:192.168.1.207
        14. 第十四个子网广播地址:192.168.1.223
        15. 第十五个子网广播地址:192.168.1.239
        16. 第十六个子网广播地址:192.168.1.255
      • 第五点:每个子网合法的主机号范围:掐头去尾

        1. 第一个子网主机地址:192.168.1.1~192.168.1.14
        2. 第二个子网主机地址:192.168.1.17~192.168.1.30
        3. 第三个子网主机地址:192.168.1.33~192.168.1.46
        4. 第四个子网主机地址: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

  1. 公有IP地址是由固定组织部门统一分配,互联网范围中必须唯一
  2. 私有IP地址是在LAN中自行分配使用,可以重复
  3. 公有IP地址是由ICANN(互联网名称与数字地址分配机构)组织下的IANA负责分配互联网的IP地址,按照洲划分,中国是由CNNIC机构管理,如:

image-20220812171751467

IPv6

  • 原因:IPv4是32位,提供的地址数量不足

  • IPv6地址是128bit二进制组成,以16位一组,每组使用冒号分割,若出现连续的0,可以省略并用两个冒号隔开(一个IP地址只允许出现一次2个连续的冒号),如: fe80::22da:22ff:fe7a:2a87

  • 特点

    1. IPV4与IPv6 不能兼容

    2. IPv6可以自动分配IP地址,不需要DHCP服务器支持,实现即插即用

    3. IPv6数据包的包头采用固定的40字节长度,去掉了包头校验等简化了包头结构,减轻了路由器的符合,提高传输速度

    4. IPv6地址:单播地址(一对一)、组播地址(一对多)、任播地址 ,没有广播地址,如:

      image-20220812172124299

IP的分片与重组

  • 原因:由于数据链路层到达的目的不同,且每种链路最大的传输单元不同,则导致IP数据报发送时需要分片接收时需要重组

  • MTU:数据链路层的最大传输单元,如图:

    image-20220812172222213

  • 重组:IP数据报在目的主机完成片段重组,可能出现乱序、丢失的现象,路由器不负责重组,如:

    image-20220812172232200

IP地址与路由控制

  • 路由转发原理:IP数据报到达路由器时,路由器根据数据报的目的地址来查询路由表,根据查询结果将数据报转发给下一投递路径,该过程称为IP路由

  • 分析:

    image-20220812173524457

    1. 主机A将IP数据报发送给直连路由器1
    2. 路由器1收到后,计算目的地址的网络地址拿到路由表中查询,得到转发结果为:10.1.0.2即路由器2
    3. 路由器2收到后,查询路由表找到匹配项,最终转发给目的主机10.1.2.1,结束通信
  • 路由表

    • 路由表记录IP数据报在下一跳应该转发的地址

    • 跳:Hop,它是网络的一个区间,IP数据报在网络中跳跃转发,在每一个区间决定IP数据报的下一条路径即为路由算法,图:

      image-20220812174402267

    • 路由表生成方式有两种,一种为手动设置即静态路由,另一种为路由器之间通过交换信息自行刷新的称为动态路由(OSPF)

ARP(Address Resolution Protocol)

  • 作用:将IP地址解析为MAC地址

  • 工作原理:

    1. ARP请求:主机通过广播发送ARP请求,如:

      image-20220812175018391

    2. ARP响应:当链路中所有设备收到ARP请求后,会拆开ARP请求包,若其中目的IP与自己IP相同则就将本机的MAC地址塞入ARP响应包中返回给发送方主机,图:

      image-20220812175118344

    3. 更新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域名解析

  • 作用:

    1. 域名管理
    2. 域名解析:将域名网址转换为IP地址
  • 域名管理

    1. 使用层级关系管理组织域名系统

    2. 地址名称解释: http:// www . baidu . com / index.html。其中,http:为协议名,www . baidu . com为域名,index.html为目录及文件名+

    3. 域名中越靠右侧的域名级别越高

    4. 最右侧为根域即顶层,使用树状组织关系:如:com 商业组织 gov 政府部门 edu 教育机构 cn 中国

      image-20220812195923996

  • 域名解析

  1. 作用:由于域名对于使用者来说使用方便但计算机设备不识别,IP地址计算机识别但不方便人使用和记忆,则就有一组即独立又协作服务器来完成域名地址与IP地址的转换
  2. 解析方式:递归解析、反复解析
  3. 工作流程
    1. 本地处理:浏览器查看缓存是否有域名与IP映射关系,若没有则向操作系统缓存要,若还没有则检查本机域名hosts文件,若无信息则向DNS服务器提出查询(hosts文件位置:C:\Windows\System32\drivers\etc)
    2. 外网查询:客户端向本地DNS服务器发出DNS请求->服务器收到请求查询本机缓存,若有则返回,若无此信息则向上级DNS服务器提出请求->……->本地DNS将IP地址返回给客户端,客户端与目的建立连接

DHCP协议

  • 作用:动态获取IP地址

  • DHCP客户端使用68号端口,DHCP服务器使用67端口监听

  • 工作原理:四步

    image-20220812200347395

    1. 客户端发起DHCP请求,由于客户端无IP地址也不知道DHCP服务器的IP地址,则通过UDP广播(255.255.255.255)发送请求
    2. DHCP服务器收到请求后,依然通过广播将相应信息(IP、网关、掩码等)发送给网络
    3. 客户端收到后,向服务器发送确认信息,并回显配置参数
    4. 最后服务端响应后应答后续参数
  • 注意

    • IP地址有租期概念,快到期时会重新发送请求报文,同意则延长租期
    • DHCP响应时间比自行设置要慢

NAT技术

  • 原因:IPV4的地址非常紧缺,使用NAT地址转换方法缓解地址耗尽问题

  • 作用:NAT可以将私有地址转换为公有地址,如:

    image-20220812200511805

  • 实际使用中使用IP地址+端口号一起进行转换,NAT变为NAPT(网络地址与端口转换协议),图:

    image-20220812200530221

    1. 图中两个客户端192.168.1.10 与192.168.1.11同时与服务器183.232.231.172进行通信,两个客户端端口号都是1025
    2. 此时,两个私有ip都需要转换为公有IP(120.229.175.121),通过公有地址的不同端口号来区分
    3. 路由器生成NAPT转换表,使用同一个公有IP和不同端口号与私有IP进行映射,实现通信

ICMP

  • 互联网控制报文协议

  • 作用:确认IP数据报是否成功到达目的地址、提供错误报告、改善网络设置

    image-20220812200624288

  • 例:

    1. 主机A向主机B发送数据报,由于某些原因路由器2未发现主机B的存在,此时路由器2会向主机A发送一个ICMP目标不可到达数据报,说明发送未成功
    2. 路由器2返回ICMP数据报时会通过路由器1转发,最后到达目的主机A
    3. 主机A收到后分解ICMP的首部信息及数据信息已得知发生的具体问题
  • ICMP报文的类型

    1. 诊断查询类型(查询报文类型)
    2. 通知出错原因类型(差错报文类型)

    image-20220812200710229

  • ping命令

    • 因特网包探索器命令,用于测试网络连接,ping命令发送一个ICMP请求,判断目的设备能否应答。
    • 格式: ping 目的IP地址 或 ping 目的域名
    • 参数:
      1. TTL:生存时间,由发送主机设置,不同操作系统数值不同,以防止数据报在网络中永不终止的循环发送,转发一次会减1
      2. time:一次请求时间,数值越小速度越快
      3. 丢包率:网络负载及健康程度

ISO/OSI网络参考模型

  • 网络协议分层模型意义:为了解决通信,由于一次性实现较难,则分步来解决,每一个步骤使用最恰当的技术来实现,所有步骤都完成则通信即可实现

OSI协议模型

image-20220812210330169

  • 一共分为七层

  • 是一种互联、开放、参考模型,是一种框架式的、指南性的协议,具体实现细节并未说明,是指定其它协议的参考

  • 物理层

    • 作用:连接不同的物理设备,传输比特流(二进制),为上层协议提供一个传输数据的可靠物理媒体
    • 设备:
      1. 中继器(repeater):放大器,对传输数据信号进行再次放大,延长传输距离,放大次数要受到限制
      2. 集线器:连接局域网中的不同设备(多端口的中继器)
  • 数据链路层:

    • 作用:在物理层基础上提供可靠的数据投递服务,完成差错控制、流量控制、物理地址寻址等功能

    • 传输数据的单位:帧,如:

      image-20220812212458802

      目的和源地址:MAC地址(6B)

      类型:标识上层协议(2B)

      数据:封装数据内容(1500B)

      CRC:循环冗余校验(4B)

  • 网络层

    • 实现两个端系统之间的数据传输,实现路由选择、连接建立、释放、终止等

    • 重要设备:路由器(router),涉及到的协议:

      image-20220812212608163

  • 传输层

  • 提供端到端的连接,透明的传输报文,将数据可靠的传送到相应端口

  • 端口:使用2Bit对应用程序编号,范围:0-65535,图:HTTP 80 FTP 21 POP3 110

  • 协议:TCP UPD

  • 应用层:为操作系统或网络应用程序提供访问接口

  • 各层功能及协议总图

    image-20220812212641335

TCP/IP协议(四层)

  • OSI协议与TCP/IP协议的映射关系:

    image-20220812214211573

  • TCP/IP各层包含的子协议:

image-20220812213513243

  • 网络层IP数据报的结构

    image-20220812214246630

  • IP数据报功能分析

    • 版本:占用4b,表示IP的版本号,一般有IPV4 和 IPV6

    • 头部长度:占用4b,表示数据报报头的长度,没有可选项的数据报报头长度为20B

    • 总长度:占16b,表示整个数据报的长度,最大65535B

    • 标识:占16b,用于分片及重组,同一个分片的标识是相同

    • 标志:占3b,表示分片的信息,含义:

      image-20220812213606392

    • 分片偏移:占13b,表示分片在整个数据报的位置,以便于重组

    • 生存时间:占8b,表示数据报可以经过的中转路由器数量,每经过一个路由器TTL会减1,变为0时会丢弃数据报,避免数据报无限传播

    • 协议:占8b,表示上一层所使用的的协议(TCP/UDP)

    • 头部校验和:占16b,用来校验数据报的报头是否损坏

    • 源地址:占32b,表示发送端的IP地址

    • 目的地址:占32b,表示接收端的IP地址

    • 可选项:很少使用

    • 填充:若没有可选项,报头长度不是32b的整数倍,则需要向填充字段填充数据,保证为32b的整数倍

  • TCP报文、IP数据报、数据帧的关系:

image-20220812213659740

TCP协议的三次握手

  • 作用:建立连接

image-20220812215450345

  • 名词解释

    • seq:序列号,占4B,标记数据段顺序
    • SYN:请求同步序列号,当SYN=1 , ACK=0 时表示建立连接,握手完毕后会清零
    • ack:序列确认号,占4B,表示期望接收到的下一个字节的编号
    • ACK:标志确认号,占1b,仅当ACK=1时,ack字段才有效
  • 过程

    1. 第一次握手:建立连接时客户端向服务器端发送SYN=1包,等待服务器确认(客户端说:我请求建立连接)
    2. 第二次握手:服务器端收到了SYN包,此时再次发送确认信息表明客户端的SYN包已收到(服务器端说:我收到了你发送建立连接的请求,我可以建立连接)
    3. 第三次握手:客户端收到服务器的SYN确认包,再次向服务器发送ACK确认包,次包发送完毕,两端都进入连接成功状态,开始发送数据(客户端说:收到了你可以建立连接的消息,那就开始吧)

TCP协议的四次挥手

  • 作用:释放连接

  • 过程
    1. 第一次挥手:客户端发送释放连接报文,随后客户端进行半关闭状态,停止客户端向服务端方向的信息发送,但任然可以接收服务端传过来的信息(客户端说:我请求释放连接)
    2. 第二次挥手:服务器端确认客户端的请求已收到,服务器端进半关闭(服务器端说:收到,你需要释放连接请求我知道了)
    3. 第三次挥手:发送剩余数据,做好服务器端到客户机端方向上的连接释放准备(服务器端说:剩余数据已发送完毕,可以关闭连接了)
    4. 第四次挥手:客户机确认服务器已做好释放连接准备,客户端等待2MSL后结束(客户端说:收到,再见)

UDP协议

  • 用户数据报协议,是一种面向无连接、不可靠的数据投递服务,没有拥塞控制的一种报文传输协议

  • TCP与UDP应用区别:

    image-20220812215859320

  • TCP报文格式:

    image-20220812215911344

  • UDP报文格式:

image-20220812213839865

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 基本操作

image-20220906204611488


文章作者: Yang Shiyu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Yang Shiyu !
赏
  目录