武汉市住房与城乡建设厅网站推广软件有哪些
文章目录
- 概念
- 1. 缓存
- 2. 备份(副本)
- 3. 硬件和软件:
- 4.端口
- 5. 二进制协议vs文本协议
- 6. 虚拟
- 7.分布式
- 8.广播域和冲突域的区别
- 9本地地址
- 协议
- 1.CSMA/CD协议
- 2.IP协议
- 3.路由算法协议(RIP,OSPF,BGP)
- 4.ARP协议,ICMP协议
- 5.DHCP协议
- 6.NAT协议
- 7. TCP协议
- 8.UDP
- 9. UDP vs TCP
- 9.其他
- 机制
- 1. 三次握手
- 2. 确认丢失和确认迟到
- 3.网络层应该做可靠交付还是不可靠交付呢?
- 4. 检验和
- 5.传统网络vs软件定义网络
- 6. 工作在各个网络层次的硬件:
- 7.路由
- 8.什么时候发送3个ACK呢?
- 9.虚拟专用网VPN和网络地址转换NAT的区别
- 10.为什么数据链路层需要帧定界
- 11.网络的异构性
- 12.ip数据报分片重组在目的主机
概念
1. 缓存
我觉得网络中很有意思的一个提高效率思路就是缓存,为了提高效率可以把一些东西存在本地,用的时候就可以直接使用。
例如:
ARP高速缓存表
DNS本地服务器也有高速缓存
还有就是处理的时候可以将事务积攒一下,一起处理:
TCP的发送缓存和接受缓存
计算机CPU内的缓存
2. 备份(副本)
(1)tcp,对刚发出去的数据要备份,直到收到确认。
(2)FTP:若要存取一个文件,就必须先获得一个本地文件副本。若要修改文件,只能对文件副本进行修改,然后再将修改后的文件副本传回到原节点。
3. 硬件和软件:
硬件快,固定;软件慢,易更改,编程。
路由器转发的信息有两类:路由信息、数据。路由器转发采用硬件转发。
以太网交换机的每个端口都直接与一个单台主机或另外一个以太网网桥相连(硬件上相连)。
以太网交换机使用专用的交换机结构芯片,用硬件转发收到的帧,其转发速率比使用软件转发的网桥要快的多。
4.端口
应用层的端口是软件层面的端口,不是物理端口,比如hub的接口是硬件的接口。
分为服务器端口号和客户端端口号服务器端口号又分为熟知端口号和登记端口号。可以这么理解,服务器端一般有固定的端口号,客户端则使用临时的动态的端口号。
(2)常用的服务器端口号:
①http:80
②ftp:21用于连接,控制进程; 20用于传送数据,数据进程
③
5. 二进制协议vs文本协议
TCP是二进制协议
HTTP和SMTP是文本协议
文本协议容易读取。
二进制协议效率高。
但是我不理解,基于文本的协议最后不还是被封装在基于二进制的tcp协议里面么?
这样说的话到最后那不就都是以二进制流的形式去传送么
但是下层对上层是透明的,可能应用层的基于文本的协议到了传输层就被转化成基于二进制的协议。
6. 虚拟
我对虚拟的理解:虚拟就是逻辑上的,和物理是一个相对的概念。
我们常常听到建立虚拟连接的虚拟就这个虚拟。ip地址是逻辑地址也就是虚拟地址。
tcp连接是虚拟连接,实际上并不存在这样一条链路,是因为下层的协议对上层透明,直接对上层提供服务,所以tcp才感觉是两个对等端在直接通信。
再比如VLAN(虚拟局域网),局域网给用户提高一种服务。是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。每个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通。这样,广播报文就被限制在一个VLAN内。
7.分布式
所谓分布式就是指数据和程序可以不位于一个服务器上,而是分散到多个服务器,以网络上分散分布的地理信息数据及受其影响的数据库操作为研究对象的一种理论计算模型。
互联网采用自适应的、分布式的动态路由选择协议:
这里可以将分布式理解为分层次的。互联网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。也就是说每个路由器都只知道一部分路由表,完整的路由表是由分布在各个地理位置的路由器里面的路由表拼凑起来的。
8.广播域和冲突域的区别
(1)广播域
(2)冲突域的每一个节点都能收到所有被发送的帧,广播域指的是所有接收广播信息的节点。
(3)冲突域是物理层,广播域是数据链路层。交换机可以分隔冲突域,因为交换机可以限制不同的端口的广播范围,让它们不相交,这样冲突域就被分隔开。路由器可以分隔广播域,因为路由器可以不转发广播包(主机字段为全1的字段)。
9本地地址
作用:
(1)提高安全性。
相当于形成与外界的屏障,外界无法得知内部的具体情况。
(2)节约ip地址资源
本地地址可以在不同的本地系统内被复用,互不干扰。
协议
1.CSMA/CD协议
2.IP协议
2.1 作用:网络互联,使得各种异构的网络在使用ip协议互联在一起之后,形成逻辑上互联的网络,使得来自不同网络的用户可以畅通地通信。2.2 特殊地ip地址(ipv4)有哪些呢?(分类的ip地址里面)
(1)网络号全0的ip地址表示本网络
(2)网络号127 即01111111作为本地软件环回测试本主机进程之间的通信之用。环回地址指的是主机用于向自身发送通信的一个特殊地址(不再通过数据链路层传递数据,而是直接在自己的网络层,运输层进行传递数据)
(3)总结:
①环回地址:127开头的
②网络号:主机号全0
③主机号全1:广播地址2.3 ip首部里面的片偏移以8个字节为单位
总长度有16位,单位是字节;片偏移是13位,单位是8个字节,标志位3位。
这样片偏移的最大值就和总长度的最大值匹配起来啦。2.4ip数据报的分片和重组涉及:
标识:同一ip数据报。
标识属于同一数据报,ip数据包重组时使用,每个从上层传下来的数据报都会被赋予唯一一个标识号。
标志位,片偏移:重组的顺序
3.路由算法协议(RIP,OSPF,BGP)
区别:(1)RIP:距离向量
OSPF:链路状态
BGP:距离向量(2)RIP和BGP-4都带了向量二字,两者区别是?
RIP是路径AS内,BGP-4是AS间。
RIP是最短路径,BGP-4是可达的路径。
RIP给出的是next hop的路由器和去往目的地的距离。
BGP-4给出的是一个路径向量,告诉我们去往下一个AS的完整路径,这些路径上包括的AS。
(3)RIPvsOSPF
① RIP协议:路由器通过nexthop参数给出明确的路径。OSPF:路由器根据自己的数据库运行算法后得到nexthop数值。OSPF形成路由表:所有的路由器根据其区域拓扑结构数据库副本采用最短路径法计算形成各自的路由表。
② RIP每隔30s更新,OSFP每隔30min更新(非触发更新)
③ RIP使用UDP,OSPF使用IP(4)BGPvsRIPvsOSPF不同点:
①BGP只在最开始交换整个报文,后来只交换更新的部分。在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
②RIP只和相邻路由器交换信息,每隔30s交换一次(或者触发更新),交换自己的全部信息。
③OSPF在链路状态发生变换时需要使用泛洪法通知所有其他路由器,信息包括与该路由器相邻的路由器及其所有相邻链路的状态。
其他:
-
对一个路由协议我们应该了解:路由表的表项及意义,选择路由的算法,更新路由的时刻,更新路由表的方式。
例如:rip协议:表项:目的网络、最短距离、next hop;距离向量算法。定时(30s)更新或者触发更新。和邻居交互信息,发送整个路由表,对比更新表项。具体的更新规则:a将自己的路由表发给b,b将a的路由表next hop加一,且next hop设置为a。b逐个去查看表项,dst不在b里面,将该表项直接加入b;dst在,next hop是a,更新;dst在,next hop不是a,比较,若距离小,则替换。 -
OSPF里面的链路状态指什么?
(1)本路由器与哪些路由器相邻,度量。(这里的度量不同于RIP协议,RIP协议只要相邻度量(距离)就是1,但是OSPF显然更加复杂,同为相邻但度量可能不同。 -
ip地址是根据拓扑结构,mac地址则是网络厂商加序列号,并没有拓扑信息。ip地址可以提高网络传输效率,便于网络管理。
(3) -
MTU(包括协议字段)
(1)以太网:64-1518
(2)网络层:48-1500 -
ip数据报首部检验和:
(1)这个字段用来检验数据报的首部,不包括数据部分。数据报每经过一个路由器,路由器都要重新计算首部检验和。不检验数据部分可以减小计算量。
4.ARP协议,ICMP协议
ARP
主机A广播ARP请求,主机B回复,那么主机A和主机B将拥有对方的ip-MAC映射。
为什么ICMP数据报封装在ip数据报里面?
(1)IP协议自身不存在获取差错信息并进行差错控制的机制,因此在使用IP协议会出现在数据包发送后不知道数据包是否到达目的地,是什么原因造成数据包不能到达目的地的。
(2)ICMP协议就是来处理数据报文传输过程中出现的错误,具体的工作内容:当目标主机或中间设备发现数据报文在传输中出现错误不能达到目的地址后,会触发ICMP模块,同时产生一个ICMP报文向源主机发送出错情况报告。源IP地址和目的IP地址封装在IP数据报里,所以ICMP报文要封装在IP数据报中被传输,才可向源主机发送出错误情况报告
5.DHCP协议
五种报文:
DHCPDISCOVER
DHCPOFFER
DHCPREQUEST
DHCPACK
DHCPNAK
请求过程:
流程 | 源地址 | 目的地址 |
---|---|---|
主机请求 | 0.0.0.0 | 255.255.255.255 |
服务器回复 | 服务器地址 | 255.255.255.255 |
主机请求 | 0.0.0.0 | 255.255.255.255 |
服务器回复 | 服务器地址 | 255.255.255.255 |
6.NAT协议
NAT协议有两个作用:
替换源地址:内网与外网通信(出)
替换目标地址:外网与内网通信(入)这引发了我另外一个好奇,ip数据报的里面为什么要放源地址?
因为ip是无连接的,又不需要返回源地址,那为什么还要放源地址呢?
我个人的理解是,这里可以关联到ICMP协议,当ip数据包传输有问题的时候,可以用ICMP数据包通知源站,所以需要在ip数据报的首部放入源地址这个数据段,因为有问题,找源站!
NAT:专用网内部的一些主机本来以及分配到本地IP地址,但现在又想和互联网上的主机通信
(1)NAT路由器将源地址从内部地址转换为全球ip地址
(2)互联网上的路由器不能转换任何地址是专用地址的数据报
(3)NAT路由器将目的地址从全球ip地址转换为内部地址
7. TCP协议
(1)URG字段和PUSH字段
urg字段是告诉发送端紧急发送
push字段是告诉接收端赶紧交付数据(交付给进程)
这里有个先验知识,就是发送缓存和接收缓存,发送方和接收方分别维护着一个发送缓存和接收缓存。发送缓存里面的数据按照先来后到去发送,接收方里面的数据会暂存到接收缓存,然后到一定地步再交付给进程(假设满了之后),以提高效率。
urg字段可以打破先来后到的顺序去发送,跨过缓存阶段,传递给应用程序。push字段可以让接收方在接收缓存未满的时候就去交付。可以这么说,urg主要是针对新来的数据,push是针对在接收缓存里面的数据。我可以理解push,但是不理解urg
(因为我一直觉得首部是给接收端看的,是为了提醒接收端,就是发送端是先有了操作,才有了首部;接收端根据首部去操作。首部对于发送端是记录,对于接收端是指令)理论上是应用层把数据交付下来,假设原本有1000bit数据,正在发送第500个数据,然后突然下来30bit紧急数据,这个时候不能直接插入么.
为什么一定要在首部里面干这个事情,因为我觉得首部就是用来封装数据,是数据封装好后给对方看的,发送端为什么还要靠解析数据来知道这个紧急数据在哪里。
我觉得可能是这样的,前面排的比较靠前的数据已经放好了,不能动,那就只能在500之后插入数据。那就组装成一个报文发给接收端,接收端收到之后先从序号500开始读取这个数据。直接交付给应用程序,也不需要经过缓存。
(这是我自己能自圆其说的最好的理解了)(2)tcp为什么是点对点的?
因为tcp是面向连接的,这个连接是逻辑上的连接,通信前建立连接,通信过程中占用全部资源,通信后释放连接。
(3) TCP重传的情形:计时器超时,3个连续的ACK。
8.UDP
9. UDP vs TCP
(1)udp数据报的源端口号可以为0,但是tcp不可以,因为tcp是全双工通信。必须告知通信对方自己的端口号,这样对方才可以将信息发送过来。
(2)tcp是面向字节流。udp是面向报文的:udp对报文既不拆分也不合并,直接完整地封装进数据部分。
9.其他
数据报里面关于长度的一些字段:
(1) 扩展首部通常包含首部长度例如:ip,tcp,反例:udp
(2) ip既有4位首部长度又有16位总长度字段,udp只有udp长度(首部+数据)
机制
1. 三次握手
甲给乙,乙回甲,这时候甲已经做好准备了,因为甲知道乙收到自己的请求并且确认了。甲再回复给乙,乙就知道自己的回复被收到。甲的连接已经打开了,那么乙就可以开始发送数据了。如果乙没有收到第三次握手的确认,会怎样?
超时重传。
超时重传时间设置太长或者太短会?
太长:不能及时的察觉那些出现差错的分组,导致重传的时间间隔很大,通信效率降低。太短:一些正常的分组由于一些原因还在路上,但由于超时计时器到时,所以需要重传,浪费网络资源的同时还可能加重拥塞为什么不是两次握手?
因为两次握手的第二次如果没有发送到客户端,那么客户端对服务器端的连接将一直关闭,服务器无法通知客户端打开连接,服务器一直向客户端发送数据包。会造成单方面的资源浪费,还可能因为将过多的资源注入网络造成网络拥堵。
2. 确认丢失和确认迟到
(1)确认丢失:接收方已经收到了分组,但确认在路上丢失,发送方又重新发送了分组,接收方将收到的分组丢弃,继续给接收方发送确认
(2)确认迟到:接收方收到确认,但是超时计时器过期了,对于重复的确认,收下就丢弃,什么也不做。我觉得这个时候发送方就可以继续发送数据了。
3.网络层应该做可靠交付还是不可靠交付呢?
(1)互联网的设计:不可靠的数据报服务,这样网络传输效率才能快,网络互联才能简单,网络规模才能大。
4. 检验和
(1)ip数据报只检验ip首部,但是udp、tcp检验和是把首部和数据部分一起检验了。我可以这样理解么,ip数据报的数据部分封装的可能是udp或者tcp这俩都会传输层检验自己的内容,所以ip只需要检验自己的首部就行。
(2)计算检验和的方式
udp、tcp:加上伪首部 ,将检验和设置为0,对首部和数据部分进行反码求和,再取反码,将得到的结果填充到首部。收到数据报时,加上伪首部,进行反码求和,结果为0通过检验,否则不通过。
原理很简单:x=-(0+x) ,x±x=0 x是检验和。
反码求和:和原码求和的不同之处在于,将高位的进位加到最低位。
具体计算方式参考这篇博文
ip:只检验首部
以太网mac帧:CRC冗余检验
5.传统网络vs软件定义网络
传统网络:每个路由器承担两项任务:既做转发,又做路由选择,既要思考,又要劳动。
SDN:将控制层面和数据层面分离,由远端的控制器做决策,下发流表,告诉路由器要做的动作,路由器只需要按照命令执行即可。
感觉有点像CS架构的意思,每个路由器就像一个客户端,然后控制器就像一个服务器一样,去响应来自客户端的请求。
那这样网络不又变成集中控制了么?可以在某些特殊情况下小范围集中控制。
6. 工作在各个网络层次的硬件:
(1)物理层:转发器
(2)数据链路层:网桥,交换机
(3)网络层:路由器
(4)传输层及以上:网关
7.路由
(1)路由聚合作用:压缩转发表,减少转发时间。
路由聚合把多个小的网络合并,在路由表中相当于合并了多个表项。(2)路由表给出的是去往目的网络的路径,而不是目的主机。
强调,网络层是负责网络到网络的通信,数据链路层是点到点,就是节点计算机到节点计算机,传输层是端到端就是进程到进程的通信。
8.什么时候发送3个ACK呢?
9.虚拟专用网VPN和网络地址转换NAT的区别
(1)VPN是两个专用网之间交换信息
(2)NAT是专用网想接入到互联网
10.为什么数据链路层需要帧定界
11.网络的异构性
物理层和数据链路层定义。包括传输介质、数据编码、链路控制协议以及不同的数据单元格式和转发机制。
12.ip数据报分片重组在目的主机
(1)不是在中间路由器。因为IP分片可以独立地通过各个路由,并且在传输过程仍存在分片地可能性(不同网络地MTU可能不同)。
(2)不是在目的网络的路由器。因为到达目的网络之后,由于数据链路层的MTU也有分片的可能。