网络常考协议
这篇博客主要讲解的是关于网络协议中面试常用的协议。
1. 停止等待协议
解释:就是指在发送完了一个分组之后停止发送,等待对方的确认,只有在对方确认之后才能发送下一个分组。
无差错的情况:
1. 发送方发送分组,并且接收方在规定的时间之内收到,并且回复确认,发送方继续发送下一组。
错误情况(超时重传):
1. 分组丢失:发送方发送分组,接收方没有收到分组,因此接收方也就不会 确认,当超过规定的时间的时候,发送发重新发送分组。
2. 确认丢失:发送方发送分组,接收方收到分组,并且发送确认回复,在回 复确认之后分组丢失,在一定的时间内发送方没有接收到确认,就会重新发送分组,在重新发送的时候需要将之间的分组丢弃。
3. 传输延时:发送放发送分组,并且接收方收到分组,并且发送确认回复,分组没有丢失,但是由于传输缓慢,在一定的时间之内接收方没有收到对应的确认。接着发送方将会重新发送分组,在重新发送分组的时候也会丢弃分组,如果接收方
收到多个确认,则停止发送,并且丢弃其他的确认。
优缺点:停止等待协议的简单,但是该协议一次性只能发送一条信息,对于信道的利用率比较低,并且信道大部分时间都是空闲的。
2. 连续ARQ协议
由于停止等待协议的信道的利用率比较低,所以需要使用连续ARQ协议来改善,该协议会连续发送一组数据包,然后在等待这些数据包的确认。发送方每收到一个确认,就把发送窗口向前移动一个分组位置。连续ARQ又称Go-back-N ARQ,意思是当前出现差错必须重传,要往回走N个帧,然后重新开始重传,也就意味着只要有一帧出现差错,即使已经正确的帧也需要重传。
优点:简单,比较容易实现
缺点:一旦出现差错就比较浪费时间,增大开销
3. 滑动窗口协议
滑动窗口指收发两端分别维护一个发送窗口和接收窗口,发送窗口有一个窗口值Wt,窗口值Wt代表在没有收到对方确认的情况下最多可以发送的帧的数目。当发送的帧的序号被接收窗口正确收下后,接收端向前滑动并向发送端发去确认,发送端收到确认后,发送窗口向前滑动。收发两端按规律向前推进。
4. ARP地址解析协议
是指根据IP地址获取物理地址的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
5. TCP/IP协议
TCP/IP协议是一个协议的集合,在TCP/IP协议中按照层次的划分可以划分为以下四个层次:应用层、传输层、网络层、链路层
链路层 -> 接收和发送数据报
主要负责将数据发送到网络传输介质上以及从网络上接收TCP/IP数据报,相当于OSI参考模型的物理层和数据链路层。在实际中,先后流行的以太网、令牌环网、ATM、帧中继等都可视为其底层协议。它将发送的信息组装成帧并通过物理层向选定网络发送,或者从网络上接收物理帧,将去除控制信息后的IP数据报交给网络层。
网络层 -> 数据报封装和路由寻址
网际层主要功能是寻址和对数据报的封装以及路由选择功能。这些功能大部分通过IP协议完成,并通过地址解析协议ARP、逆地址解析协议RARP、因特网控制报文协议ICMP、因特网组管理协议IGMP从旁协助。所以IP协议是网络层的核心。
网际协议IP:
IP协议是一个无连接的协议,主要负责将数据报从源结点转发到目的结点。也就是说IP协议通过对数据报中源地址和目的地址进行分析,然后进行路由选择,最后再转发到目的地。需要注意的是:IP协议只负责对数据进行转发,并不对数据进行检查,也就是说,它不负责数据的可靠性,这样设计的主要目的是提高IP协议传送和转发数据的效率。
ARP:该协议负责将IP地址解析转换为计算机的物理地址。
虽然我们使用IP地址进行通信,但IP地址只是主机在抽象的网络层中的地址。最终要传到数据链路层封装成MAC帧才能发送到实际的网络。因此不管使用什么协议最终需要的还是硬件地址。
每个主机拥有一个ARP高速缓存(存放所在局域网内主机和路由器的IP地址到硬件地址的映射表)
举例:A发送B
1. A在自己的ARP高速缓存中查到B的MAC地址,写入MAC帧发往此B
2. 没查到,A向本局域网广播ARP请求分组,内容包括自己的地址映射和B的IP地址
3. B发送ARP响应分组,内容为自己的IP地址到物理地址的映射,同时将A的映射写入自己的ARP高速缓存(单播的方式)
注:ARP Cache映射项目具有一个生存时间。
RARP:将计算机物理地址转换为IP地址
ICMP:该协议主要负责发送和传递包含控制信息的数据报,这些控制信息包括了哪台计算机出现了什么错误,网络路由出现了什么错误等内容。
传输层 -> 应用进程间端到端的通信
传输层主要负责应用进程间“端到端”的通信,即从某个应用进程传输到另一个应用进程,它与OSI参考模型的传输层功能类似。
传输层在某个时刻可能要同时为多个不同的应用进程服务,因此传输层在每个分组中必须增加用于识别应用进程的标识,即端口。
TCP/IP体系的传输层主要包含两个主要协议,即传输控制协议TCP和用户数据报协议UDP。TCP协议是一种可靠的、面向连接的协议,保证收发两端有可靠的字节流传输,进行了流量控制,协调双方的发送和接收速度,达到正确传输的目的。
UDP是一种不可靠的、无连接的协议,其特点是协议简单、额外开销小、效率较高,不能保证可靠传输。
传输层提供应用进程间的逻辑通信。它使应用进程看见的就好像是在两个运输层实体间一条端到端的逻辑通信信道。
当运输层采用TCP时,尽管下面的网络是不可靠的,但这种逻辑通信信道相当于一条全双工的可靠信道。可以做到报文的无差错、按序、无丢失、无重复。
注:单单面向连接只是可靠的必要条件,不充分。还需要其他措施,如确认重传,按序接收,无丢失无重复。
熟知端口:
20 FTP数据连接 21 FTP控制连接 22 SSH 23 TELNET 25 SMTP 53 DNS 69 TFTP 80 HTTP 161 SNMP
传输层
应用层位于TCP/IP体系结构的最高一层,也是直接为应用进程服务的一层,即当不同的应用进程数据交换时,就去调用应用层的不同协议实体,让这些实体去调用传输层的TCP或者UDP来进行网络传输。具体的应用层协议有,SMTP 25、DNS 53、HTTP 80、FTP 20数据端口 21控制端口、TFTP 69、TELNET 23、SNMP 161等
6. UDP协议
UDP协议全称是用户数据报协议[1] ,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。
1. 发送之前无需建立连接,减小了开销和发送数据的时延
2. UDP不使用拥塞控制,不使用可靠交付,因此主机不需要维护复杂的参数表、连接状态表
3. UDP用户数据报只有8个字节的首部开销,而TCP要20字节。
4. 由于没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(IP电话等实时应用要求源主机以恒定的速率发送数据)
7. FTP协议
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。