计算机网络中协议相关的问题

目录

分层协议

协议上的各种机器

交换机、路由器的概念,各自的用途,区别

路由器的分组转发算法。

说说静态路由和动态路由有什么区别

传输层协议与网络层协议的区别?

硬件(MAC)地址的概念及作用。

IP、TCP、UDP头部都有哪些东西?

面向连接和非面向连接的服务的特点是什么?

TFTP与FTP的区别

大写ACK与小写ack的区别

ARP是地址解析协议,简单语言解释一下工作原理。

简述一下ping的原理

什么是DHCP

TTL是什么,作用是什么,哪些工具会用到它?

计算机网络涉及的各种表


分层协议

OSI分层   (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

TCP/IP分层(4层):网络接口层、网络层、传输层、应用层。

五层协议(5层):   物理层、数据链路层、网络层、传输层、 应用层。

每一层的协议如下:

物理层:RJ45、CLOCK、IEEE802.3    (中继器,集线器,网关)

数据链路层:PPP、FR、HDLC、VLAN、MAC   (网桥,交换机)

网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP  (路由器)

传输层:TCP、UDP、SPX

会话层:NFS、SQL、NETBIOS、RPC

表示层:JPEG、MPEG、ASII

应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS(网关)

MAC 层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。

协议上的各种机器

Ø 中继器的主要功能是对接收到的信号进行再生整形放大以扩大网络的传输距离。

Ø 集线器在此基础上将所有的节点集中在以它为中心的节点中,可组成星型拓扑结构。

Ø 网桥是数据链路层互联的设备,在网络互联中可起到数据接收、地址过滤与数据转发的作用,可用来实现多个不同网络系统之间的数据交换。

Ø 交换机是一种基于MAC识别,能完成封装转发数据包功能的网络设备。它可以“学习”MAC地址,并把其存放在内部地址表中,当一个数据帧的目的地址在MAC地址表中有映射时,它被转发到连接目的节点的端口而不是所有端口。交换机将局域网分为多个冲突域,每个冲突域都是有独立的宽带,因此大大提高了局域网的带宽。

Ø 路由器用于连接多个逻辑上分开的网络,具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网。

Ø 网关在网络层以上实现网络互连,用于两个高层协议不同的网络互连。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。网关早期的时候就是路由器的别名,但是在现在的网络模型中把它归为应用层设备。主要功能是过滤数据包信息以实现相应的功能

交换机、路由器的概念,各自的用途,区别

交换机(ARP缓存IP对应的MAC地址)数据链路层

    在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换机才广播到所有的端口,接收端口回应后交换机 会“学习”新的地址,并把它添加到内部地址表中。

    交换机工作于OSI参考模型的第二层,即数据链路层。交换机内部的CPU会在每个端口成功连接时,通过ARP协议学习它的MAC地址,保存成一张MAC表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此,交换机可用于划分数据链路层广播,即冲突域;但它不能划分网络层广播,即广播域。

数    据链路层的交换机存储的是mac地址对应的在交换机中的端口,即它可以拿到网络层arp后的mac地址去使用,若没有存储此mac对应的端口,则广播到所有端口

路由器(路由和转发)网络层

    路由器(Router)是一种计算机网络设备,提供了路由与转发两种重要机制,可以决定数据包从来源端到目的端所经过的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转发。路由器工作在OSI模型的第三层——即网络层,例如IP协议。

路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。

交换机与路由器有什么区别?

  • 工作所处的OSI层次不一样,交换机工作在OSI第二层数据链路层,路由器工作在OSI第三层网络层
  • 寻址方式不同:交换机根据MAC地址寻址,路由器根据IP地址寻址
  • 转发速度不同:交换机的转发速度快,路由器转发速度相对较慢。

路由器的分组转发算法。

1)从数据报的首部提取目的主机的IP地址D(小),得出目的网络地址N(大)

2)若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要在经过其他路由器,直接把数据报交付给目的主机(这里包括把目的地址D转换为具体的MAC地址,把数据报封装成MAC帧,在发送此帧);否则就是间接交付。

3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器。

4)若路由表中有达到网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器。

5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器。否则执行6)。

6)报告转发分组出错。

说说静态路由和动态路由有什么区别

静态路由是由管理员手工配置的,适合比较简单的网络或需要做路由特殊控制。而动态路由则是由动态路由协议自动维护的,不需人工干预,适合比较复杂大型的网络。

路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。动态路由机制的运作依赖路由器的两个基本功能:对路由表的维护;路由器之间适时的路由信息交换。

传输层协议与网络层协议的区别?

网络层协议负责的是提供主机间的逻辑通信

传输层协议负责的是提供进程间的逻辑通信

硬件(MAC)地址的概念及作用。

概念:MAC地址就是在媒体接入层上使用的地址,也叫物理地址、硬件地址或链路地址,其被固化在适配器的ROM中。可见MAC地址实际上就是适配器地址或适配器标识符。当某台计算机使用某块适配器后,适配器上的标识符就成为该计算机的MAC地址。MAC地址长度为6字节(48比特),由IEEE的注册管理结构RA进行管理分配。

作用:MAC地址是计算机的唯一标识,在数据链路层中,交换机通过识别MAC地址进行数据包的传输。

IP、TCP、UDP头部都有哪些东西?

IP头部(60字节:20固定、40可变,可以认为首部是20字节)

TCP头部

UDP头部

面向连接和非面向连接的服务的特点是什么?

    面向连接的服务,通信双方在进行通信之前,要先在双方建立起一个完整的可以彼此沟通的通道,在通信过程中,整个连接的情况一直可以被实时地监控和管理。

    非面向连接的服务,不需要预先建立一个联络两个通信节点的连接,需要通信的时候,发送节点就可以往网络上发送信息,让信息自主地在网络上去传,一般在传输的过程中不再加以监控。

TFTP与FTP的区别

FTP(File Transfer Protocol,文件传输协议)协议在TCP/IP协议族中属于应用层协议,用于在远端服务器和本地客户端之间传输文件,使用TCP端口20和21进行传输。端口20用于传输数据,端口21用于传输控制消息。

TFTP(Trivial File TransferProtocol,简单文件传输协议)也是用于在远端服务器和本地主机之间传输文件的,相对于FTP,TFTP没有复杂的交互存取接口和认证控制,适用于客户端和服务器之间不需要复杂交互的环境。TFTP协议的运行基于UDP协议,使用UDP端口69进行数据传输。

基于的传输协议不一样:FTP是基于TCP、TFTP是基于UDP

端口号不一样:FTP是用21.20、TFTP是69

速度和安全方面:FTP在速度方面没有TFTP快,但是FTP安全好

大写ACK与小写ack的区别

大写ACK是TCP头部Flags标志服里面的标志

TCP头部部分如图:

如图,小写ack就是上面的确认号,大写ACK就是下面的标志位

ack占用4个字节=4*8=32bit,ACK占1bit

ARP是地址解析协议,简单语言解释一下工作原理。

ARP为网络层协议

1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。

2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。

3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。

4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

ARP协议的用途:解决同一个局域网内主机或路由器的IP地址和MAC地址的映射问题。

算法:在主机的ARP高速缓存中应存放一个从IP地址到MAC地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。

广播发送ARP请求,单播发送ARP响应。

ARP表记录在路由器,ip层是第三层,mac层是第二层,低层为高层服务。数据包的传送过程就一个“打包-拆包”的过程。

1、arp表项是把主机的ip地址和mac地址进行对应,在路由器进行路由寻址的时候,首先要看ip包头的内容,找到目标ip地址,然后根据路由表进行转发;

2、若A路由器对ip包头的目标ip地址进行分析后,A路由器根据路由表的信息,找到ip包的下一跳和出接口信息进行转发,发送到下一跳B路由器上,这时候A路由器和下一跳B路由器之间是点对点的通信,或者说:A、B两台路由器必然各有一个接口属于同一网段;

3、A路由器发送ip报文给B,因为属于同一网段,因此,A必须知道B的接口的MAC地址(这就是二层为三层提供传输服务),于是A向B发送ARP请求报文,请求B的对应接口的MAC地址,B收到请求报文后,用arp回应报文答复,告诉A:B的mac地址是多少。

4、A路由器将B的ip地址和mac地址进行绑定,形成arp表,然后在ip报文外封装二层报头:包含了B的mac地址,从相应接口发送出去;

5、B收到后,检查MAC地址,发现目标MAC地址是自己的,于是拆除二层报头,分析ip报头,再次进行和A一样的操作过程。

arp表是一个不断学习、更新的过程,每通信一次,arp表中的相应内容要更新一次。

ICMP

ICMP 全称是 Internet Control Message Protocol,也就是互联⽹控制报⽂协议。

ICMP 主要的功能包括:确认 IP 包是否成功送达⽬标地址、报告发送过程中 IP 包被废弃的原因和改善⽹络设置等。

在 IP 通信中如果某个 IP 包因为某种原因未能达到⽬标地址,那么这个具体的原因将由 ICMP 负责通知。

简述一下ping的原理

Ping(Packet InterNet Groper)分组网间探测是ICMP的一个重要应用,用来测试两个主机之间的连通性。Ping使用了ICMP回送请求与回送回答报文。Ping是应用层直接使用网络层ICMP的一个例子。它没有通过运输层的TCP或UDP。

ping就是给目标IP地址发送一个 ICMP 回显请求,并要求对方返回一个 ICMP 回显应答来确定两台网络机器是否连通,时延是多少。

实现原理为向目的主机发送4个32字节长的ICMP回送请求报文,若目的主机正常工作并且响应了该ICMP回送请求报文,就将发回ICMP回送回答报文。最后可得出的统计结果为目的IP地址,发送的,收到的和丢失的分组数,及往返时间的最小值、最大值和平均值。

    Ping命令格式为ping hostname 此hostname即为要测试连通性的主机名或它的IP地址。

在 ICMP 逐层封装的过程中,需要知道源IP、源MAC地址、目的IP、目的MAC地址,前三者是已知的,只需要获取目的MAC地址即可:

若在同一网段,只需要发送ARP广播;

若不在同一网段,发送ARP广播给交换机,交换机若没有缓存目的IP对应的MAC地址,它会再转发该ARP广播包。

Ping工作过程——

    假定主机A的IP地址是192.168.1.1,主机B的IP地址是192.168.1.2,都在同一子网内,则当你在主机A上运行“Ping 192.168.1.2”后,都发生了些什么呢?

首先,Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.1.2”一起交给IP层协议(和ICMP一样,实际上是一组后台运行的进程),IP层协议将以地址“192.168.1.2”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并在一个arp映射表中查找出IP地址192.168.1.2所对应的物理地址(也叫MAC地址,熟悉网卡配置的朋友不会陌生,这是数据链路层协议构建数据链路层的传输单元——帧所必需的),一并交给数据链路层。后者构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。

    其中映射表由ARP实现。ARP(Address Resolution Protocol)是地址解析协议,是一种将IP地址转化成物理地址的协议。ARP具体说来就是将网络层(IP层,也就是相当于OSI的第三层)地址解析为数据链路层(MAC层,也就是相当于OSI的第二层)的MAC地址。

    主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。

即先由IP地址,在网络层传输,然后再根据mac地址由数据链路层传送到目的主机

什么是DHCP

动态主机設定協定(英語:Dynamic Host Configuration Protocol,缩写:DHCP),又称动态主机组态协定,是一個用于IP网络的网络协议,位于OSI模型应用层,使用UDP协议工作

对于一个新加入网络的计算机,如果我们设置了DHCP动态获取IP地址,那么在它加入网络之后就会向DHCP服务器发送一个数据报,整个数据包是这样的:

  (1)最前面的"以太网标头",设置发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者就是本机网卡的MAC地址,后者的地址这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。

  (2)后面的"IP标头",设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255。

  (3)最后的"UDP标头",设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。

这个数据包构造完成后,就可以发出了。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。因为接收方的MAC地址是FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的IP地址,才能确定是不是发给自己的。当看到发出方IP地址是0.0.0.0,接收方是255.255.255.255,于是DHCP服务器知道"这个包是发给我的",而其他计算机就可以丢弃这个包。

接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个"DHCP响应"数据包。这个响应包的结构也是类似的,以太网标头的MAC地址是双方的网卡地址,IP标头的IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方),UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在Data部分。

新加入的计算机收到这个响应包,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数。

DHCP有三种机制分配IP地址:

1) 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。

2) 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。

3) 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

NAT

IPv4 的地址是⾮常紧缺的,可以通过⽆分类地址来减缓 IPv4 地址耗尽的速度,但是互联⽹的⽤户增速是⾮常惊⼈的,所以 IPv4 地址依然有被耗尽的危险。于是,提出了⼀种⽹络地址转换 NAT 的⽅法,再次缓解了 IPv4 地址耗尽的问题。

私有IPv4地址空间

10.0.0.0 - 10.255.255.255

172.16.0.0 - 172.31.255.255

192.168.0.0 - 192.168.255.255

简单的来说 NAT 就是同个公司、家庭、教室内的主机对外部通信时,把私有 IP 地址转换成公有 IP 地址。

普通的NAT是 N 个私有 IP 地址,就需要转换成 N 个公有 IP 地址,并不能解决地址耗尽的问题。因此诞生了一种 ⽹络地址与端⼝转换 NAPT,它可以把 IP 地址 + 端⼝号⼀起进⾏转换

图中有两个客户端 192.168.1.10 和 192.168.1.11 同时与服务器 183.232.231.172 进⾏通信,并且这两个客户端的 本地端⼝都是 1025。

此时,两个私有 IP 地址都转换 IP 地址为公有地址 120.229.175.121,但是以不同的端⼝号作为区分。 

于是,⽣成⼀个 NAPT 路由器的转换表,就可以正确地转换地址跟端⼝的组合,令客户端 A、B 能同时与服务器之 间进⾏通信。

这种转换表在 NAT 路由器上⾃动⽣成。例如,在 TCP 的情况下,建⽴ TCP 连接⾸次握⼿时的 SYN 包⼀经发出, 就会⽣成这个表。⽽后⼜随着收到关闭连接时发出 FIN 包的确认应答从表中被删除。

由于 NAT/NAPT 都依赖于⾃⼰的转换表,因此会有以下的问题

1. 外部⽆法主动与 NAT 内部服务器建⽴连接,因为 NAPT 转换表没有转换记录。

2. 转换表的⽣成与转换操作都会产⽣性能开销。

3. 通信过程中,如果 NAT 路由器重启了,所有的 TCP 连接都将被重置。

解决的⽅法主要有两种⽅法:

第⼀种就是改⽤ IPv6

IPv6 可⽤范围⾮常⼤,以⾄于每台设备都可以配置⼀个公有 IP 地址,就不搞那么多花⾥胡哨的地址转换了,但是 IPv6 普及速度还需要⼀些时间。

第⼆种 NAT 穿透技术

NAT 穿越技术拥有这样的功能,它能够让⽹络应⽤程序主动发现⾃⼰位于 NAT 设备之后,并且会主动获得 NAT 设 备的公有 IP,并为⾃⼰建⽴端⼝映射条⽬,注意这些都是 NAT设备后的应⽤程序⾃动完成的。

也就是说,在 NAT 穿透技术中,NAT设备后的应⽤程序处于主动地位,它已经明确地知道 NAT 设备要修改它外发的数据包,于是它主动配合 NAT 设备的操作,主动地建⽴好映射,这样就不像以前由 NAT 设备来建⽴映射了。

说⼈话,就是客户端主动从 NAT 设备获取公有 IP 地址,然后⾃⼰建⽴端⼝映射条⽬,然后⽤这个条⽬对外通信, 就不需要 NAT 设备来进⾏转换了。

TTL是什么,作用是什么,哪些工具会用到它?

比如:(ping traceroute ifconfig netstat)

TTL(Time To Live)是指生存时间,简单来说,它表示了数据包在网络中的时间,经过一个路由器后TTL就减1,这样TTL最终会减为0,当TTL为0时,则将数据包丢弃,这样也就是因为两个路由器之间可能形成环,如果没有TTL的限制,则数据包将会在这个环上一直死转,由于有了TTL,最终TTL为0后,则将数据包丢弃。

ping发送数据包里面有TTL,但是并非是必须的,即没有TTL也是能正常工作的

traceroute正是因为有了TTL才能正常工作

ifconfig是用来配置网卡信息的,不需要TTL

netstat是用来显示路由表的,也是不需要TTL的

计算机网络涉及的各种表

MAC表/ CAM表(FDB表,2层 交换机):MAC地址——接口/端口,MAC地址表是MAC地址和交换机接口的逻辑关系表,负责二层的数据转发。

ARP表(2.5层 路由器):MAC地址——IP地址;

路由表(FIB表,3层):路由表是IP地址可达范围的一张表,相当于是网络里的地图,负责三层的数据转发;网段——网关——出接口(网关路由);网段——出接口(直连路由);网络地址(主机路由)。

DAI检测表(Dynamic ARP Inspection 牛逼的交换机):动态ARP检测(用于防御ARP欺骗,从网络设备上丢弃欺骗包)

  • 交换机记录每个接口对应的IP地址和MAC,即port<->mac<->ip,生成DAI检测表;(普通交换机只记录port<->mac)
  • 交换机检测每个接口发送过来的ARP回应包,根据DAI表判断是否违规,若违规则丢弃此数据包并对接口进行惩罚。

DHCP侦听表:

DNS高速缓存:在应用层存储域名对应的IP地址,即 域名<->IP

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值