谈下你对五层网络协议体系结构的理解?
应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要有不同的应用层协议。
在互联网中的应用层协议很多,如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等等。我们把应用层交互的数据单元称为报文。
运输层的主要任务是负责向两台主机中进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。
由于一台主机可同时运行多个线程,因此运输层有复用和分用的功能。复用是多个应用层进程可同时使用下面运输层的服务,分用是运输层把收到的信息分别交付上面应用层中的相应进程。
运输层主要使用以下两种协议:
TCP(传输控制协议)——提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段。
UDP(用户数据协议)——提供无连接的、尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。
网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组(也称IP数据报)或包进行传送。
互联网是由大量的异构网络通过路由器相互连接起来的。互联网使用的网络层协议是无连接的网际协议IP和许多路由选择协议,因此互联网的网络层也叫做网际层或IP层。
数据链路层:两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的数据链路层的协议。在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻结点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。
在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提出数据部分,上交给网络层。
控制信息还使接收端能够检测到所收到的帧中有无差错。如发现有差错,数据链路层就丢弃该帧。如果需要改正数据在数据链路层传输时出现的差错,那么就要采用可靠性传输协议来纠正出现的差错。
物理层:在物理层上所传送的数据单位是比特。物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别发送方所发送的比特。物理层还要确定连接电缆的插头应当有多少根引脚以及各引脚应如何连接。
为什么计算机网络要采用分层结构?
(1)各层之间相互独立:上层不需要知道下层的功能是如何实现的,只需要知道通过下层的接口可以获得什么服务即可。
(2)灵活性好:只要服务和接口不变,层内实现方法可任意改变。所以随着技术的发展,每一层都可以采用最新的技术来实现功能。
(3)易于实现和标准化:采用分层结构后,可以将计算机网络复杂的通信过程划分为有序的连续动作与有序的交互过程,有利于将网络复杂的通信工作过程化解为一系列可以控制和实现的功能模块,使得复杂的计算机网络系统变得易于设计,实现和标准化
TCP/IP 四层模型中每一层对应的协议
(1)数据链路层:
自动重传请求协议:ARQ停止等待协议:CSMA/CD点对点协议:PPP
(2)网络层对应的协议有:
IP(网际互连协议)、ICMP(网络控制报文协议)、ARP(地址解析协议)、RARP(逆地址解析协议)
(3)传输层对应的协议有:
UDP(用户数据报协议)、TCP(传输控制协议)
(4)应用层对应的协议有:
FTP(文件传输协议)、HTTP(超文本传输协议)、DNS(域名解析协议)、Telnet(远程登录协议)、SMTP(简单邮件传输协议),SNMP(简单网络管理协议)
网络协议的三个核心要素
语法,规定了传输数据的格式;
语义,规定了所要完成的功能;
同步,规定了各操作之间的时序关系;
物理层解决的问题
物理层解决如何在连接各种计算机的传输媒介上传输数据比特流,而不是指具体的传输媒介。物理层的传输媒介,如光纤、双绞线、同轴电缆等,并不在物理层之内,而是在物理层的下面。物理层的任务是确定传输媒介的接口特性,即机械特性、电气特性、功能特性和过程特性。
数据链路层的三个基本问题
(1)封装成帧:在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在接收到物理层上交的比特流后,就能根据首部和尾部的标记识别帧的开始和结束。
(2)透明传输:由于帧的开始和结束的标记使用特定的控制字符,如果数据本身就含有这些特定的字符,就会出现帧定界的错误。若传输时,帧的数据部分不会出现帧定界的控制字符,这样的传输就是透明传输。
(3)差错检测:传输过程中可能出现比特差错,比如1可能会变成0,0可能会变成1,或者出现帧丢失、帧重复、帧失序等问题。
常用的检错方法有:① 奇偶校验 ② 循环冗余校验CRC
网络层的作用
网络层在数据链路层提供的两个相邻端点之间数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源节点经过若干个中间节点传送到目的节点。通俗来讲,就是添加源IP地址和目的IP地址。
传输层的作用
传输层为不同主机上运行的应用进程提供逻辑通信。传输层使用两种不同的协议:即面向连接的、可靠的传输控制协议TCP,和面向非连接的、不可靠的用户数据报协议UDP。
传输层有两大重要的功能:复用和分用。
① 复用是指在发送端,多个应用进程共用一个传输层。
② 分用是指在接收端,传输层会根据端口号将数据分派给不同的应用进程。
计算机网络的主要功能?
- 硬件资源共享2、软件资源共享。3、用户间信息交换。4、分布式处理
主机间的通信方式?
客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。
对等(P2P):不区分客户和服务器。
电路交换,报文交换和分组交换的区别?
电路交换:整个报文的比特流从源点连续的直达终点,像在一个管道中传输。包括建立连接、传输数据和断开连接三个阶段。最典型的电路交换网络是传统电话网络。
报文交换:将整个报文转发到相邻节点,全部存储下来,查找转发表,转发到下一个节点。是存储-转发类型的网络。
分组交换:将报文分组转发到相邻节点,查找转发表,转发到下一个节点。也是存储-转发类型的网络。
虚电路和数据报的区别
虚电路和数据报都是物理层的分组交换技术(除此之外还有电路交换、报文交换)。
(1)数据报是无连接的服务,而虚电路是面向连接的;
(2)数据报的分组都是通过独立的路由选择和转发,而同属于一条虚电路的分组按照同一路由转发;
(3)数据报服务中每个分组都有完整的目的地址,但虚电路中每个分组仅存放长度较短的虚电路号。
(4)数据报不保证数据的可靠交付,虚电路可靠性由网络保证;
(5)数据报不保证分组的有序到达,虚电路保证分组的有序到达;
计算机网络的主要性能指标?
- 带宽(Bandwidth)2、时延(Delay)(总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延)3、时延带宽积
计算机网络提供的服务的三种分类?
- 面向连接服务与无连接服务
- 可靠服务和不可靠服务
- 有应答服务和无应答服务
端到端通信和点到点通信的区别?
从本质上说,由物理层、数据链路层和网络层组成的通信子网为网络环境中的主机提供点到点的服务, 而传输层为网络中的主机提供端到端的通信。
直接相连的结点之间的通信称为点到点通信, 它只提供一台机器到另一台机器之间的通信,不涉及程序或进程的概念。同时,点到点通信并不能保证数据传输的可靠性,也不能说明源主机与目的主机之间是哪两个进程在通信,这些工作都是由传输层来完成的。
端到端通信建立在点到点通信的基础上,它是由一段段的点到点通信信道构成的,是比点到点通信更高一级的通信方式,以完成应用程序(进程) 之间的通信。”端” 是指用户程序的端口,端口号标识了应用层中不同的进程。
路由器的主要功能
路由器主要完成两个功能:一是路由选择(确定哪一条路径),二是分组转发(当一个分组到达时所采取的动作)。
(1)路由选择是根据特定的路由选择协议构造路由表,同时经常或定期地和相邻路由器交换信息而不断地更新和维护路由表。
(2)分组转发是处理通过路由器的数据流,关键操作是转发表查询、转发相关的队列管理和任务调度等。
MAC地址与IP地址的区别
地址性质不同:MAC地址是物理地址,IP地址是逻辑地址。
可变性不同:MAC地址具有唯一性,每个硬件出厂时候的MAC地址是固定的;而IP地址是不固定的。
工作层次不同:数据链路层基于MAC地址转发数据帧,网络层基于IP地址转发报文。
长度不同:MAC地址为48位,IPv4是32位长,IPv6是128位。
分配依据不同:IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商。
交换机与路由器的区别
(1)工作所处的OSI层次不同:交换机工作在OSI第二层数据链路层,路由器工作在OSI第三层网络层。
(2)寻址方式不同:交换机根据MAC地址寻址,路由器根据IP地址寻址。
(3)转发速度不同:交换机的转发速度快,路由器的转发速度相对较慢。
网桥的概念
网桥是一个局域网与另一个局域网之间建立连接的桥梁。
网卡(网络适配器)的功能
网卡能够对数据的串行和并行传输进行转换,并且能够对数据进行缓存,实现以太网协议,同时能够实现帧的传送和接收,对帧进行封装等。
TCP与UDP的区别
1、TCP 面向连接,UDP 是无连接的;
2、TCP 提供可靠的服务,也就是说,通过 TCP 连接传送的数据,无差错,不丢失,不重复,且按序到达;3、UDP 尽最大努力交付,即不保证可靠交付
4、TCP 的逻辑通信信道是全双工的可靠信道;UDP 则是不可靠信道
5、每一条 TCP 连接只能是点到点的(一对一);UDP 支持一对一,一对多,多对一和多对多的交互通信
6、TCP 面向字节流(可能出现黏包问题),实际上是 TCP 把数据看成一连串无结构的字节流;UDP 是面向报文的(不会出现黏包问题)
7、UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如 IP 电话,实时视频会议等)
8、TCP 首部开销20字节;UDP 的首部开销小,只有 8 个字节
对于视频网站和视频聊天,是用 TCP 还是用 UDP
TCP和UDP是质量和实时性的权衡。
对于视频网站,完全可以缓冲20秒再播放,不会带来什么影响,但如果视频画面模糊不清晰肯定是不好的,所以用TCP。
而对于视频聊天,如果缓冲5秒,相信整个聊天已经没法愉快的进行了,而这时出现一些画面质量的损失是可以接受的,所以用UDP。
在某些场景下,为什么 UDP 比 TCP 更有优势
UDP以其简单、传输快的优势,在越来越多的场景下取代了TCP,如实时游戏。
网速的提升给UDP的稳定性提供了可靠的网络保障,丢包率会很低,如果使用应用层重传,能够保证传输的可靠性。
而若采用TCP,一旦发生丢包,TCP会将后续的包先缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大
手机联网上网有几种方式
目前手机常用的上网方式有两种,一是通过手机数据流量,二是通过连接无线网络。
(1)开启手机的数据开关,通过手机卡实现上网,不过此种上网方式会消耗手机流量,运营商会收取费用。
(2)开启手机的WLAN功能,然后连接无线路由器上网,此种方法上网,有一定局限性,必须在路由器的信号范围内才可以正常连接使用,不过此种方式上网是免费的。
TCP的可靠性如何保证?
1、确认和超时重传
2、数据合理分片和排序
3、流量控制
4、拥塞控制
5、数据校验
(1)确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。
(2)数据校验:检测数据在传输过程中是否发生变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据超时后会重发数据。
(3)数据合理分片和排序:TCP会根据最大传输单元合理分片,以防止在传输过程中进行二次分片。接收方会缓存未按序到达的数据,重新排序后再交给应用层。
(4)流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出。TCP使用的流量控制协议是可变大小的滑动窗口协议。
(5)拥塞控制:当网络拥塞时,TCP会减少数据的发送,以防止全网中网络负载过重。
为什么不采用“两次握手”建立连接呢?
这主要是为了防止已失效的连接请求报文段突然又传送到服务器而产生错误。比如客户端向服务器发出TCP连接请求,第一个连接请求报文在网络的某个结点长时间滞留,客户端超时后认为报文丢失,于是再重传一次连接请求,服务器收到后建立连接。数据传输完毕后双方断开连接。而此时,前一个滞留在网络中的连接请求到达服务器,而服务器会认为客户端又发来连接请求,此时若使用三次握手,则服务器向客户端返回确认报文段,但由于这是一个失效的报文段,所以客户端将不会对服务器发送的确认报文段进行确认,也就不会错误地再次建立连接。但若采用的是“两次握手”,则这种情况下服务器认为传输连接已经建立,并一直等待客户端传输数据,而客户端此时并无连接请求,这样就造成了服务器的资源白白浪费。
为何不采用“三次挥手“释放连接
如果客户端已经和服务器建立了TCP连接,当客户端主动断开与服务器的连接时,经过前两次挥手,客户端到服务器端的连接已经释放。在第三次挥手时,服务器往客户端发送连接释放报文段,如果客户端不进行第四次挥手对该报文进行确认,那么该报文一旦丢失,客户端将一直处于无法关闭状态。因为此时服务器已经关闭连接了,无法再次发送连接释放报文。
TCP拥塞控制的四种算法
拥塞控制是指防止过多的数据注入网络,防止网络中的路由器或链路过载。
(1)慢开始算法
在TCP刚刚连接好并开始发送TCP报文段时,先令拥塞窗口为1,即一个最大报文段的长度。每收到一个对新报文段的确认后,拥塞窗口+1。也就是每经过一个往返时延,拥塞窗口加倍。慢开始一直把拥塞窗口增大到慢开始门限,然后改用拥塞避免算法。
(2)拥塞避免算法
发送端的拥塞窗口每经过一个往返时延就增加1,而不是加倍,使拥塞窗口按线性规律缓慢增长,也就是加法增大。而当出现一次超时时,令慢开始门限等于当前拥塞窗口的一半,并重置拥塞窗口为1,也就是乘法减少。
(3)快重传
当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时。
(4)快恢复
发送端收到连续三个冗余ACK时,把慢开始门限设置为出现拥塞时发送方拥塞窗口的一半。与慢开始的不同之处是,它把拥塞窗口的值设置为慢开始门限改变后的数值,而不是1,然后开始执行拥塞避免算法使拥塞窗口缓慢地线性增大