#15、#16 网络的基本构成与网络的几协议

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

什么是网络?

网络:

  网络基础知识

    网络的概念

    网络的功能,特性,组成,结构;

    两个网络模型(iOS/OSI,TCP/IP)

  网络组件知识;

    交换机基础

    路由器基础

  网络设备的进阶:

    网络架构

      数据通信

      资源共享


    网络部分组成:操作系统、数据库、应用协议、应用程序

    硬件部分组成:计算机、网络通信设备、交联互联设备



    网络模型分层


     用户层

    7应用层                     降低复杂性

    6表示层                     标准版化解 

    5会话层                     模块化设计

    4传输层                     确保技术的互操作性

    3网络层                     加快发展速度

    2数据链路层                  简化教学

    1物理层

     介质层


通信子网:

    3网络层                     加快发展速度

    2数据链路层                  简化教学

    1物理层

资源子网

    7应用层                     降低复杂性

    6表示层                     标准版化解 

    5会话层                     模块化设计

    FCS 真校验序列

    对等通信是保证数据通信的基础


TCP/IP协议栈(民用版或者说实用版)                应用层

  定义了层                               传输层

  第1层到第3层使用不同名称                    Internet层

  第5层到第层组合成一个应用层                  网络访问层


与OSI同一时代出现,不过OSI更理论化,TCP/IP更实用化


  应用层:因特网

     ||——> 协议端口

  传输层:互联网

     ||——> 协议号

  互联网层:互联网

     ||——> 协议类型

  网络接口层(网络访问层,物理层、数据链路层):以太网


互联网层协议特征:

  运行于OSI网络层                       _________________________

  面向无连接的协议                      |                |

  独立处理数据包                       |  ICMP       IGMP   |

  分层编制                           |       IP         |

  尽力而为传输                        |   ARP       RARP   |

  无数据恢复功能                       |_________________________|


Internet protocol -- IP    


ARP:地址解析协议

  逻辑地址 --> 物理地址

  已知逻辑地址的情况下,获取对应逻辑地址的物理地址;

  如何解析:

    1.每一个参与网络功能的设备中,都有一个ARP库;

    2.ARP缓存:通过ARP协议进行广播,指定的目标主机进行回应,本机缓存对应的结果信息;                    


RARP:反向地址解析协议

  物理地址 --> 逻辑地址

  已知本地物理地址,获取合法的逻辑地址;

  用于无盘工作站;


面向无连接:

  1.无需在通信之前建立通信连接,也无需维护连接稳定,通信结束也无需拆除连接;

  2.无序数据传输

  3.无数据恢复和数据可靠性保证


平面编址和分层编址:

  平面编制:将所需管理的资源,从头到尾按照固定大小分为若干个cell,每个cell进行独立编址;

    特点:编址容易,寻址需要遍历,效率很低;

  分层编制:将所需管理的资源先进行各种分类,按照对应的类别进行编址;

    特点:编址复杂,但是寻址高效;


为什么要使用IP地址?

  它们可唯一标识IP网络中的每台设备

  每天主机(计算机。网络设备。外围设备)必须具有唯一的地址。

  主机ID:

    标识单个主机

    由组织分配给各设备 


IP地址由两本分组成:

  网络部分:用来描述指定主机所在网络范围;

  主机部分:用来描述指定主机在特定的网络范围中的具体位置;


IP地址:是由IPv4协议定义的,IPv4地址

  整个地址由32位二进制构成;


  网络位+主机位 =32


  IP地址分类:

    A类:第一个二进制位必须为0,并且网络位8位;

    B类:前两个二进制位必须为10,并且网络位16位;

    C类:前三个二进制位必须为110,并且网络位24位;

    D类:前四个二进制位必须为1110,并且网络位32位;通常用于组播通信

    E类:前四个二进制位必须为1111,保留用于科学研究;


  IP地址的点分十进制表示法:

    1.将32位的IP地址位,以8位为一组,共划分为4组;

    2.每一组之间使用.符号进行分隔;

    3.将每个8位组转换为十进制表示;


  使用点分十进制表示的各类IP地址范围:


    A类:0.0.0.0 ~ 127.255.255.255

    00000000.00000000.00000000.00000000


    01111111.11111111.11111111.11111111


      第一个8位组全为0的,是无效IP,因为其表示整个IP地址栈;

      第一个8位组中除了第一位意外全部为1,称为环回地址;

      有效的A类地址:1.0.0.0 ~ 126.255.255.255


    B类:128.0.0.0 ~ 191.255.255.255

    10000000.00000000.00000000.00000000


    10111111.11111111.11111111.11111111


    C类:192.0.0.0 ~ 223.255.255.225

    11000000.00000000.00000000.00000000


    11011111.11111111.11111111.11111111


    D类:224.0.0.0 ~ 239.255.255.255

    11100000.00000000.00000000.00000000


    11101111.11111111.11111111.11111111


    E类:240.0.0.0 ~255.255.255.255

    11110000.00000000.00000000.00000000


    11111111.11111111.11111111.11111111


IP地址之保留地址:

  保留地址:不能选择为其他主机配置使用的IP地址;

  0.0.0.0 ~ 0.255.255.255:代表整个网栈

  127.0.0.0 ~ 127.255.255.255:代表环回网路


  自动分配地址段

  169.254.0.0 ~ 169.254.255.255:代表自动分配的地址段,只有局域网可能能用


  网络地址:主机位全为0的地址;

    1.0.0.0:表示一个范围的名称


  广播地址:主机位全为1的地址;

    1.255.255.255:作为目的地址代表整个网段中的所有IP地址;


  定向广播地址:E类地址

    255.255.255.255:作为目的的地址代表整个IP地址栈中的所有IP地址;


  IPv4的地址总数:2^32 = 42亿9400万

    去除的IP地址:

      D类和E类:5亿+

      0和127网段的地址:3500万

      169.254网段地址:65536

      网络地址:126+16384+209万

      广播地址:126+16384+209万


    可以分配给主机使用的IP地址大约为36亿左右

      为了解决IP地址枯竭的问题:

        增加IP地址的复用次数;

          私有IP地址:可以重复使用,互联网无法为其路由;

            A:10.0.0.0 ~ 10.255.255.255

            B:172.16.0.0 ~ 172.31.255.255

            C:192.168.0.0 ~ 192.168.255.255

          共有IP地址:可以在互联网使用,但必须唯一;

          NAT:network address translation

            SNAT:源地址转换,使用共有IP地址替换数据包中的私有IP地址;

            DNAT:目的地址转换,使用私有IP地址替换数据包中的公有IP地址;


        研究更加庞大的地址栈;

          IPv6:128bit,2^128,10^80

            冒号分十六进制:


        IPv4和IPv6共享:

          1.地址换换

          2.IPv6地址包含IPv4地址:IPv6地址的最右侧的32位就是IPv4地址


  IP首部格式;

    version:4bits协议版本信息;ipv4:0100   ipv6:0110

    IHL:4bits,Internet protocol header length IP首部长度,15行

      20byte ~ 60byte,必须为4的整数倍;

    服务类型:

      4bits:服务类型

        0000,0001,0010,0100,1000

        最大带宽,最小延迟,最大吞吐量,最高可靠性

      1bit:保留位

      3bits:优先级

        000,001,010,011,100,101,110,111

    数据包长度:16bits,65536byte,包括首部;64KB

    标识:16bits,标识数据的来源,标识指定的数据是由哪个源数据分片得到的;

    标志:3bits,

      第1位:保留

      第2位:是否分片,没有分片是0,被分片了是1

      第3位:是否有更多分片,表示数据是否为最后一个分片

      000,010,011

    片偏移:13bits,IP协议对数据包进行分片之后的序号;

    生存时间(time to live,TTL):8bits,计数器,每一个数据包都会获得一个初始化的TTL值,在每次经过路由设备之后,都会自减1,0表示该数据包为不可用数据,下一次路由设备将其获得后,会直接丢弃;可以有效的防止数据包的无限循环传输;

      通常的TTL初始值可以为:255,128,64

    协议号:8bits,互联网层和传输层之间的通信接口,根据协议号指示的内容,正确接受数据之后,向上交给传输层的哪个协议进行进一步解封处理;

      TLP:6

      UCP:17

      OSPF:89

      EIGRP:88

    首部校验和:16bits,进行首部的可靠性校验;

    源地址:32bits,发送方地址

    目的地址:32bits,接收方地址


互联网层:

计算机如何使用IP地址;

  源IPv4地址:发送数据的主机上配置的IP地址;


  源IPv4的配置方式;

    手动配置:直接向网卡的配置文件中添加我们认为合法的IPv4地址;

      特点:

        地址分配精确;

        管理员的重复工作量很大;

        容易发生手误导致主机无法接入网络;

    自动配置:没有IP地址的计算机,通过特定协议向其他能够提供IP地址的计算机进行通信,并获得IPv4地址;

      协议:

        bootp:

          启动协议:

          利用rarp协议向全网广播获取IP地址的需求;bootp服务器会从其地址池中的选择一个IPv4地址,永久归这台主机使用;


        DHCP:

          dynamic host configuration protocol,动态主机配置协议;

          地址租借规划;

          每一个地址都有其对应的租约期限;

          续租的规则:

            默认情况下,当租约期限过去50%的时候,客户端就开始联系服务器进行地址续租;如果续租不成功,客户端会连续尝试三次,然后继续使用当前IP地址;

            当租约期限过去87.5%的时候,客户端会放弃IP地址;重新广播是否有其他服务器能够让其继续使用之前的IP地址;

            一直等到租约到期,客户端IP地址彻底被释放;客户端将试图从其他的服务器获得其他的IP地址以连接网络;


            DHCP客户端的租借过程——四线会话:

              1.客户端发送DHCP discover消息,以确定网络中是否有DHCP服务器能为本机提供IP地址;

              2.服务器收到DHCP discover消息后,会检查自己的地址池,如果仍然有可用IP地址,就从中选择一个IP地址,向客户端广播发送DHCP offer消息;

              3.客户端将接收到的第一个DHCP offer 消息中的IP地址作为可选择IP地址,向网络中广播DHCP request消息,通知服务器,选定这个IP地址作为本次通信的IP地址;

              4.提供IP地址的服务器收到DHCP request消息后,将IP地址和对应主机的物理地址临时绑定;并且开始租约计时;给客户端发送DHCP ack 消息;

                不是提供该IP地址的服务器收到DHCP request,将刚刚提供的IP地址重新放入地址池中,并给客户端发送DHCP nak消息;


  目的IP地址如何给出:

    手动指定:

      直接在地址栏中手动书写目的主机的IP地址;

    自动解析:

      DNS协议:domain name system,域名系统协议;      


        在DNS服务器上,保存着特定的域名和IP地址的映射关系;可以完成地址解析的任务;


        地址解析:

          正向地址解析:

            通过域名获得其对应的IP地址的过程;

          反向地址解析:

            通过IP地址反解其域名的过程;


        www.baidu.com:完全限定域名(FQDN)


        花生壳——DNS缓存服务器


        网通DNS服务器

        202.99.166.4

        202.99.160.68


        电信DNS服务器

        222.222.222.222

        222.222.202.202


  TCP/IP协议栈分层结构:


  应用层:因特网

     ||——> 协议端口

  传输层:互联网

     ||——> 协议号

  互联网层:互联网

     ||——> 协议类型

  网络接口层(网络访问层,物理层、数据链路层):以太网


  传输层:

    OSI第四层:端到端的连接


    TCP/IP第三层:

      TCP:transfer control protocol,传输控制协议;

      UDP:user datagram protocol,用户数据报协议;


      TCP与UDP是互补关系;TCP作不了的UDP可以做,UDP作不了TCP做


      TCP:会话多路复用、分段、流量控制(需要时)、面向连接(需要时)、可靠性(需要时)


                        可靠性                 尽力

      连接类型            面向连接                无连接

      协议              TCP                     UDP  

      排序              是                      否        

      用途              电子邮件、              语音、通信

                       文件共享、下载


      UDP的特点:

        1.运行于OSI模型和TCP/IP模型的传输层

        2.为应用程序提供网络层接入而无需为可靠性机制付出多余开销

        3.属无连接协议

        4.提供有限的错误检查

        5.提供尽力传输

        6.不具备数据恢复功能


      UDP报头

          16位源端口    16位目的端口

          16位DUP长度   16位UDP校验和

                    数据


  UDP协议的首部格式:

    端口:也曾为逻辑端口,或叫协议端口;它是应用层和传输层之间的通信接口;

      端口是由16bits二进制构型的数字标识;其范围0-65535;

      其中:

        0:标识全部端口号,不能单独使用;

        1-1023:保留端口号;

        1024-64511:动态分配端口;

        64512-65535:注册端口;


        ssh:TCP/22

        http:TCP/80

        https:TCP/443

        SMTP:TCP/25

        POP3:TCP/110

        IMAP:TCP/143

        telnet:T/CP22

        ftp:TCP/21

        DCHP:UDP/67(server)UDP/68(client)

        DNS:UDP/53 TCP/53


    所有端口类型文本地址: 

      Windows系统中:C:\Windows\system32\drivers\etc\services

      Linux类系统中:/etc/services


      这列文件中,保存了应用层协议和传输层协议之间默认的通信接口映射关系;


    源端口:16bits,发送方在封装数据的时候选择的端口号;一般来讲,客户端发送的数据的源端口号是随机选择的空间端口;


    目的端口:16bits,此次数据通信的接收方在传输层向应用层进行数据传递时所必须使用的端口号;一般来讲,数据的目的端口号是固定的;


    注意:

      1.一般来讲,一次往返通信过程中,两组数据的端口号会互换;

      2.在使用端口时,更加在意目标端口的准确性;如果因为目标端口不明确而导致接收方无法使用正确的应用程序来处理数据,则该数据会直接被传输层协议丢弃;


  数据长度:16bits,整个UDP数据报的报文长度,包括首部;

  数据校验和:16bits,整个UDP数据报的校验和,一定程度上保证数据完整性;


传输层协议

  TCP协议:

    TCP的特点:

      1.TCP/IP协议栈的传输层;

      2.为应用程序访问的网络层;

      3.面向连接的协议;

      4.全双工模式运行;

      5.错误检查;

      6.数据包序列化;

      7.接受确认;

      8.数据恢复功能;


    TCP协议首部:

      源端口号:16bits

      目的端口号:16bits

      序列号:32bits,序列号的范围:1 ~ 2^32-2

        第一个数据段的序列号为随机选择;

        第二个数据段的序列号:前一个数据段的序列号+前一个数据段数据部分的大小+1

        ...

      确认号:32bits,确认号的范围:2 ~ 2^32-1

        接收方用来对已经接收到的数据进行确认,并要求发送方继续传输后续数据段的标识;一般来讲,确认号是发送方要发送的下一个数据段的序列号;

      首部长度:4bits,24字节 ~ 60字节

      保留标志位:3bits,暂时没有被使用

      认证加密标志位:3bits,IPv6里才会用到,IPv4用不到

      TCP特性标志位:

        URG:紧急指针标志位;如果该标志位置1,该数据的转发优先级将会被提高,以使得这样的数据被优先转发;如果多个数据的UGR标志位同时置1,则后面16位的紧急指针越大的,优先级越高;

        ACK:与连接管道有关的确认标志位;用来响应主动发起连接的建立请求或拆除请求的那一方;

        PSH:推进位,如果该标志位置1,则在接收方可以将该数据不加入缓存队列,直接交给应用程序进程进行处理;

        RST:重置连接标志位;在TCP连接耗尽或者出现故障的时候,重新构建TCP连接的标志位;

        SYN:同步标志位,用户在建立TCP连接的过程中,主动发送连接建立请求的那一方发起连接的信号;

        FIN:结束连接标志位,如果该标志位置1,则另一方将知道此次TCP连接将被拆除,予以确认即可;

      窗口尺寸:16bits,主要实现流量协商及控制;可以防止网络拥塞;

        滑动窗口:

        拥塞窗口:

        紧急窗口:

        窗口的大小,意味着我们一次可以传输的数据段的数量;

      数据段校验和:16bits,保证数据完整性的校验信息

      紧急指针:16bits,在UGR标志位都置1时,用于区分其优先级;

      选项:数据段分段的时间戳


TCP协议的面向连接的特性:

  1.连接建立:三次握手

    1)发送方生成一个TCP首部数据(没有数据部分),在首部中,源、目的的端口由应用协议给出;序列号为随机选择,确认号为0,标志位SYN置1;

    2)接收方收到由发送方发来的SYN请求数据之后,判断自身能否完成对方所要求的数据通信;如果可以,则返回一个尤其生成的TCP首部数据;源、目的端口与之前的数据正好想法;序列号随机,确认号为对方下一个数据的序列号,SYN和ACK两个标志位同时置1;

    3)发送方在接收的对方的响应数据之后,检查其ACK标志位是否置1;如果为1在看SYN标志位是否置1,如果也是1就予确认;随即生成第二个TCP首部数据(没有数据部分);系列号为前一个数据的序列号+1,确认号为接收方下一个数据的序列号;ACK标志位置1;

  2.拆除连接;四次挥手

    1)当所有的数据传输结束之后,由一方主动向另一方发送一个FIN标志位置1的TCP首部数据;

    2)另一方收到这样的FIN置1的数据之后,回应一个ACK置1的确认数据;

    3)另一方主动发出一个FIN置1的TCP首部数据,请求拆除连接;

    4)主动结束方予以确认,发送ACK标志位


TCL协议的流量控制特性:

  被动流量控制:拥塞窗口

    由于收发双方的网络资源不均衡不对等造成的网络拥塞,导致接收方数据缓冲区溢出,使得大量的数据丢失;由接收方发送一个窗口大小为0的确认数据段给发送方,以暂停发送方的数据发送;

  主动流量控制:滑动窗口

    每一次双方互相通信时,都会协商窗口大小,以最小窗口为标准,发送方按照这样的窗口大小进行数据发送;


TCL协议的确认特性:

  1.在发送方尚未接收到来自于接收方的确认信息之前,不会继续发送后续数据;

  2.如果在一定的超时时间之内,发送方没有收到接收方发送来的确认信息,发送方会重新传输之前发生过的数据;


  通过确认特性,能够保证数据的可靠性传输;


建立简单网络

  第一层设备

    第一层提供物理介质及编码。

      示例:

        以太网

        串行

        中继器

        集线器(HUB)

        网卡的物理接口


  第二层设备

    第二层设备为物理介质提供接口

      示例:

        网卡

        网桥

        交换机基础


    第二层编址

      MAC地址(介质访问控制,media access control,以太网中的物理地址编址形式;)

      分配的终端设备


  第三层设备及其公功能

    网络层在两个主机系统之间提供连接和路径选择。

    对于主机,这是数据链路层和NOS的上层之间的路径。

    对于路由器,它是穿越网络的实际路径


    第三层编制

      每个NOS都具有各自的第3层地址格式,

      OSI使用NSAP

      TCP/IP使用IP

      IPX/SPX使用IPX


数据通信过程描述——双机互连

  1.如果用户在应用程序中没有指定目标IP地址,则应用程序会自动向DNS服务器发出查询请求,以获得对应的目标主机的IP地址;

  2.当前应用程序所需要使用的传输层的哪个协议?选择了TCP进行进一步封装

  3.传输层并不马上为应用层发送数据,而是由TCP协议自行生成数据段首部,通过三次握手建立TCP连接;

  4.IP协议会按照正确的地址和对应格式完成数据封装,但是网络访问层需要通过Mac地址完成数据传输,因此需要查询ARP缓存中是否有对应该IP地址的Mac地址记录

  5.如果未找到该记录,TCP三次握手请求,将暂存内存;有ARP协议生成ARP请求数据包,以广播的方式发送出去;目标主机收到后,会先将源主机的Mac地址缓存下来,然后将主机的IP地址和Mac当作数据封装并以单播返回源主机;

  6.源主机缓存目的主机的Mac地址,而后将TCP三次握手的请求封装并予以发送;

  7.当TCP连接正确建立之后,就可以以应用程序发送数据到目的主机。

  8.对于每一批次的TCP报文,目的主机都必须给予确认;

  9.当所有数据报文发送完成后,通过四次挥手拆除TCP连接



本文转自谁等了谁 51CTO博客,原文链接:http://blog.51cto.com/12486569/1939112
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
2天前
|
存储 网络协议 安全
15.网络协议-Radius协议
15.网络协议-Radius协议
|
2天前
|
存储 网络协议 网络安全
14.网络协议-邮件协议
14.网络协议-邮件协议
|
6天前
|
存储 JSON 前端开发
网络原理(4)HTTP协议(下)
网络原理(4)HTTP协议
19 0
|
9天前
|
存储 网络协议 Linux
|
9天前
|
安全 SDN 数据中心
|
10天前
|
网络协议 安全 网络性能优化
|
20天前
|
缓存 网络协议 数据库连接
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
20 0
|
30天前
|
安全 网络协议 数据安全/隐私保护
网络技术基础(18)——PPP与PPPoE协议
【3月更文挑战第5天】本文介绍了广域网的基本架构和PPP协议。广域网涉及CE(用户边缘设备)、PE(服务提供商边缘设备)和P(服务提供商设备),其中CE为企业出口,PE类似光猫,P为运营商内部设备。PPP是数据链路层协议,用于点到点连接,提供PAP和CHAP安全认证,并通过LCP和NCP协商链路和网络层参数。PPP协商包括链路层、认证(可选)和网络层三个阶段。PPPoE协议结合了PPP和以太网优点,用于以太网上进行PPP认证和计费,其会话建立包含发现、会话和终结阶段。配置PPP或PPPoE时,需在对应接口设置账号密码和认证方式。