尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

数通知识梳理(一)

数通知识梳理(一) 回顾数通知识一、网络参考模型学完后知道数据在终端之间的传输过程1.数据通信的概念凡是通过网络进行的通信就叫做数据通信例如两台终端之间通过网线进行资源的访问和下载就叫做数据通信。2.网络的物理形态也就是由各种各样功能不同性能不同的设备例如路由器、防火墙、交换机等通过传输介质将所有的终端连接在一起所以数据通信的最终目标是实现全球终端之间的互联互通。然后局域网、城域网、广域网的区别在于每个范围内连接的终端数量不同但网络架构都是一样的。例如一个公司里的多台电脑通过有线、ap连接多台接入交换机多台接入交换机通过传输介质连接汇聚交换机多台汇聚交换机又通过传输介质连接核心交换机。这就是一个园区网络连接互联网的架构。像城域网广域网本质上都是一样的3.网络的拓扑形态一共有6种①星型拓扑将所有节点通过中心节点连在一起这样做灵活性高扩展性好并且易于监控因为所有节点之间通信都要经过中心节点但中心节点发生故障就会导致整个网络无法进行通信。②总线型拓扑将所有节点通过一根总线缆连接起来这样做安装简单、节约成本即使某一节点故障也不会影响整个网络的通信但是由于所有节点都共用带宽所以随着加入的节点越来越多导致共用的带宽也会越来越少并且跟星型拓扑有一样的问题一旦共用的线缆发生故障就会影响整个网络的通信。③环型拓扑将所有节点连接成一个环路一般适用于工业组网因为终端数量少分布散距离远。这样做安装简单但扩展性差灵活性低因为增加新的节点时需要中断原来的连接。④树形拓扑属于星型拓扑的层次化结构适用于大部分场景例如园区、校园等这样做可以快速扩大网络规模因为能快速将多个星型拓扑连接在一起但层级越高的节点发生故障引起的问题也会越严重。⑤全网状拓扑所有节点两两相连这样做性能和可靠性都是最好的但成本很高并且灵活性低。⑥部分网状拓扑只有部分关键节点之间两两相连形成一种介于全网状与星型/总线型之间的混合结构。这样做成本、性能与可靠性更可控。但需要精心规划哪些节点是关键节点以及它们之间如何互联网络设计难度更高非关键节点的可靠性较差比较依赖于上级节点及其链路。4.数据通信的过程将数据载荷也就是01这样的二进制流进行封装打上头部和尾部形成报文通过传输介质将其变为电信号或光信号发给网络设备例如路由器、交换机等当网络设备收到后进行各种表项的维护后再通过传输介质发给目标主机目标主机收到后进行解封装最终获得数据载荷。所以数据通信的实质就是将这些二进制流通过传输介质发给目标主机。5.OSI七层网络模型①物理层定义数据传输的物理特性例如传输介质是电线那就将二进制流变成电信号是光纤就变成光信号是wifi就变成电磁波。②数据链路层类似于快递小哥将数据封装成帧并打上MAC地址发给交换机进行转发交换机通过mac地址来识别各个终端电脑、手机等并基于报文的源MAC记录和接收端口之间的映射关系然后把数据帧发出。③网络层类似于包裹上的收件人/发件人地址将数据封装成包并打上互联ip地址发给路由器有了互联ip地址路由器就可以无视距离将数据包发到任何地方。④传输层有两个作用首先会根据情况为数据包选择跑的快但可能丢包的udp协议或者跑的有点慢但是特别稳不丢包的tcp。例如小明在微信上查看女神的照片照片是个文件如果在传输的时候有部分数据丢失就会导致图片无法查看。所以为了保证文件传输的完整性一般会选用tcp因为tcp具有超时重传机制会对所发的每个数据包进行确认只有对方真的收到了才算发送成功。最后会将数据封装成段并打上端口号通过端口号区分不同应用产生的数据例如小明同时登陆qq微信支付宝3个应用那么就要给数据段打上不同的端口号来识别这个数据段属于哪个应用。端口号的取值范围0-65535其中0-1023用来定义常见的协议1024-65535用来给用户自定义服务使用例如应用多开以及为napt提供空闲端口号。注意端口号是动态的没有被使用时会释放出来。⑤会话层类似于桥梁决定不同应用间是否能互相通信例如淘宝买的东西不能用微信支付但是淘宝和微信从网络角度来看是可以互通的但是淘宝和微信是竞争关系所以人为的禁止了互通。⑥表示层用来进行数据格式的转换因为计算机之间靠二进制流进行通信所以会将图片、文字变成二进制流方便在传输介质里传输。常见协议有jpeg图片的编码方式mp3声音的编码方式ascii文字的编码方式等。⑦应用层负责产生数据例如小明通过微信、qq查看女神照片所以照片是应用层产生的数据而微信、QQ属于应用层的软件。总结osi参考模型的作用以及排障思路用来解决全球终端与终端之间的通信包括终端上不同应用程序之间的通信通过将不同的功能拆分到不同的模块里实现再通过下层为上层进行服务从而将不同层级调用起来至于不同层级之间怎样调用靠的是层与层之间的接口传输层就是靠端口号网络层靠协议号数据链路层靠以太网帧里的类型值。故障排查思路自下而上分层排查物理层看网口灯亮不亮、线插好没有。数据链路层查VLAN划分对不对、交换机端口状态是不是Up。网络层Ping网关、Ping对端IP查路由表有没有去程和回程路由。传输层Telnet或测试端口通不通如telnet IP 80。应用层看防火墙策略有没有拦截、NAT映射是否生效、认证是否过期。例如我在高校项目测试时遇到过一个真实故障虽然学生Portal认证成功但上不了网我先通过ip config确认终端是否拿到IP目的是确保DHCP正常。然后Ping网关看是否能通确保ARP表项正常网关没挂。接着去防火墙看策略命中计数器Hit Count——发现那条‘学生访问互联网’的安全策略命中次数一直为0。这说明流量根本没进防火墙或者策略根本没匹配上。所以就回头检查AR路由器网关的配置发现OSPF静默接口配错了把连接防火墙的接口也配进去了导致防火墙没学到去往学生网段的路由回程路由缺失所以丢包。最后修改静默接口配置后路由表恢复正常学生上网通了。6.TCP/IP模型1.背景既然已经有了OSI七层模型那为什么现网却用的是TCP/IP模型呢因为OSI模型在搭建时是先将所有模型定义好再去应用导致搭建模型的时间花了4年在这期间人们等不了于是就将当时成熟的协议组合起来创建了tcp/ip标准模型。2.类型一共有两种①.TCP/IP标准模型将物理层、数据链路层、网络层合并为网络接入层然后将应用层、表示层、会话层合并为应用层。②.TCP/IP对等模型将物理层、数据链路层、网络层重新拆分为单独层级但应用层、表示层、会话层依旧合并为应用层。3.TCP/IP三次握手和四次挥手①.三次握手首先握手的作用是确保真正传输数据时双方能正常进行通信。以PC1 ping PC2为例会从上往下依次进行报文的封装到传输层时会产生TCP头部包含了序列号、ACK、FLAG、WIN字段其中序列号是随机产生用来区分不同的TCP会话因为任何基于TCP开发的应用在发送数据前都要建立三次握手这样就会导致TCP会话不止一条。ACK字段是用来对相应的TCP会话进行确认通过将相应会话的序列号1实现FLAG字段里包含SYN、ACK、FIN将其置位后分别表示请求建立连接、确认建立连接、请求断开连接此时SYN置位表示请求跟PC2建立连接最后WIN字段表示本端最大能接收的字节数避免一次性发送的数据过大对端处理不了造成数据的丢失进行重传降低传输效率。如果PC2同意建立连接此时会将FLAG字段的SYN和ACK置位表示同意建立连接的同时由于数据的通信是双向的所以还会跟PC1请求建立连接。最后PC1同意建立连接也会将FLAG字段的ACK置位表示同意建立连接。②.四次挥手以PC1 ping PC2为例当PC1的数据发送完成以后就会将FIN和ACK置位表示请求断开连接PC2同意的话就会将ACK置位表示同意断开连接由于TCP是全双工模式代表同一时刻双方都可以进行数据的传输所以当pc2也发送完数据后同样会将FIN和ACK置位表示请求断开连接。PC1收到以后同样会将ACK置位表示确认断开连接。4.TCP超时重传机制通过对发送出去的每一个数据包都进行确认目的是确保数据真正发送成功如果对方没有回复确认消息就会进行重传。通过比较发送报文的序列号传输数据的大小是否等于回复报文的确认号判断是否真正发送成功。5.TCP窗口滑动机制用来控制数据的传输速率通过在握手时发送的WIN字段告诉对方本端最大能接受的字节数。避免一次性发送的数据过大对面处理不了造成数据的丢失进行重传降低传输效率。6.数据通信的全过程以终端访问网页为例首先用户访问的是一个网页所以会发送一个DNS数据包给DNS服务器如果DNS服务器和客户端不在同一个网段那么客户端会将DNS数据包发给默认网关此时如果客户端的ARP表里没有默认网关的mac地址那客户端会以广播的形式发送arp报文获取默认网关的mac地址然后将DNS数据包封装后交给默认网关网关路由器解封装后查看路由表然后逐跳转发到DNS服务器经过DNS解析后将网页对应的IP地址返回给客户端。当客户端知道网页对应的IP地址后会与服务器通过三次握手后建立连接先向服务器发送一个SYN包请求建立连接。如果发现没有服务器的目的MAC地址就会以广播的形式发送ARP报文请求网关的MAC地址客户端得到服务器的MAC地址后封装成完整的SYN包发给网关网关路由器解封装后查看路由表然后逐跳将SYN包发给服务器服务器收到后同意建立连接的话会同时发送一个SYN、ACK包给客户端客户端收到后也同意建立连接就继续发一个ACK包给服务器这样就通过三次握手建立了连接。当建立连接后客户端使用HTTP协议发送数据包给服务器由于ARP表里有了服务器的MAC地址所以数据包就直接逐跳转发给了服务器服务器收到数据包后将数据返回给客户端的浏览器 浏览器通过渲染最终用户看到了网站上的主页信息。最后当所有数据都发送和接受完毕后客户端会同时发送一个ACK包和FIN包给服务器请求断开连接服务器如果同意断开连接的话会返回一个ACK包接着服务器还会同时发送一个ACK包和FIN包给客户端请求断开连接客户端如果同意断开连接的话也会返回一个ACK包这样就通过四次挥手断开了连接完成了终端访问服务器的全过程。
返回列表