计算机网络是我专业课里成绩较高的课,老师应该会问到,面试的时候计网也是公司里爱问的科目。整理一下看到的网上的一些保研/考研复试题,便于复习。
TCP/IP的核心思想是“网络互连”,即TCP、UDP、IP协议。将使用不同协议的异构网络,在网际层(即IP层)统一为虚拟逻辑网络。其特点是两头大中间小,应用层和网络接口层有很多协议,而中间的IP层很小。这表明,TCP/IP协议可以为各种应用提供服务(everything over ip),也可以屏蔽不同物理网络实现的细节(ip over everything)。
多路复用技术是将若干个彼此独立的信号进行合并,从而可以在同一物理信道上同时传输的方法。主要包括时分多路复用、频分多路复用、波分多路复用和码分多路复用。
信道表示向单方向传送信息的媒体,通信线路通常包含一条发送信道和一条接收信道。
1)奈奎斯特定理:极限数据传输率 = (b/s),其中V表示有多少种不同的码元,W为带宽,单位为Hz
2)香农公式:极限数据传输率 = (b/s),其中信噪比S/N以分贝记,20dB = 100,30dB = 1000,40dB = 10000
①封装成帧。在一段数据的前后加上首部和尾部,构成一个帧。接收端收到物理层上交的比特流后,能根据首部和尾部的标记,识别帧的开始和结束。
②透明传输。由于帧定界符可能出现在数据部分而产生错误。传送时要进行处理,以保证无论是什么样的数据都能够正确传输。
③差错检验。处理传输过程中可能出现的比特差错,帧丢失、帧重复和帧失序等问题。
④流量控制。控制发送速率,使得接收方有足够的缓冲空间来接收每个帧。协议包括:停止-等待协议、后退N帧协议和选择重传协议。
CSMA/CD的全称是载波侦听多点接入/碰撞检测。工作过程可概括为“发前先听,边听边发,冲突停发,随机重发”。
适配器准备一个以太网帧放到缓冲区中,如果适配器侦听到信道空闲,就开始传输该帧。在传输过程中,适配器检测来自其他适配器的信号能量。如果发生冲突,则停止传输并发送一个48bit的拥塞信号。在中止(即传输拥塞信号)后,采用二进制指数退避算法等待一段随机时间后重发。
1)循环冗余码
生成多项式和位串的转换(下面是一个5阶多项式,注意有X^0)
2)停止-等待协议的信道利用率
设L为帧长,C为发送速率,R为单程传播时延。可知,协议忙的时间为L/C,协议空闲的时间为等待确认返回的时间2R。故信道利用率为
3)CSMA/CD协议的最小帧长
最小帧长 = (总线传播时延 × 2) × 数据传输率
每个路由表项目中有三项关键数据&#xff1a;<目的网络&#xff0c;距离&#xff0c;下一跳>。RIP通过距离向量算法完成路由表的更新。每隔30秒&#xff0c;路由器将自己知道的全部信息&#xff0c;即整个路由表发送给相邻的路由器。
对应每个相邻路由器发过来的RIP报文&#xff0c;先将此报文中所有的“下一跳”改为自己&#xff0c;并将距离字段加1&#xff08;即通过自己去往目标网络&#xff09;。同时&#xff0c;使用贪心算法更新自己的路由表。如果180秒还没有收到相邻路由器的更新报文&#xff0c;则把此相邻路由器设为不可达&#xff0c;即距离为16。
经过第一次RIP广播&#xff0c;每个路由器就知道了自己相邻路由器的路由表&#xff1b;经过第二次RIP广播&#xff0c;每个路由器就知道了距离自己跳数为2的网络的路由&#xff0c;直到最终收敛。
主机A向主机B发送连接请求&#xff0c;主机B对A发来的报文段进行确认&#xff0c;主机A对B的确认再确认。
慢开始算法&#xff1a;先令cwnd&#61;1&#xff0c;每经过一个RTT&#xff0c;使cwnd加倍。直到cwnd达到慢开始门限ssthresh的值后&#xff0c;改为拥塞避免算法。
拥塞避免算法&#xff1a;每经过一个RTT&#xff0c;使cwnd增加一个MSS的大小&#xff08;通常是1&#xff09;。若出现超时&#xff0c;令慢开始门限ssthresh等于当前cwnd的一半&#xff0c;并置cwnd&#61;1&#xff0c;重新执行慢开始算法。即“加法增大&#xff0c;乘法减小”。
快重传&#xff1a;使用冗余ACK来检测丢包。当发送方收到三个重复的ACK报文时&#xff0c;直接重传对方尚未收到的报文段&#xff0c;而不必等待那个报文段的重传计时器超时。
快恢复&#xff1a;当发送端收到三个重复的ACK时&#xff0c;执行“乘法减小”&#xff0c;把慢开始门限ssthresh设为出现拥塞时cwnd的一半。与慢开始不同的时&#xff0c;它置cwnd&#61;ssthresh&#xff0c;然后执行拥塞避免算法。
其中&#xff0c;主机向本地域名服务器的查询采用递归查询&#xff0c;本地域名服务器向根域名服务器的查询采用迭代查询。&#xff08;使用UDP报文&#xff09;
文件传输协议FTP&#xff0c;提供交互式的访问&#xff0c;允许客户指明文件的类型与格式&#xff0c;并允许文件具有存取权限。它屏蔽了各计算机系统的细节&#xff0c;因而适合于在异构网络中传送文件。
FTP在工作时采用两个并行的TCP连接。一个是控制连接&#xff08;21端口&#xff09;&#xff0c;一个是数据连接&#xff08;20端口&#xff09;。控制连接在整个会话期间一直保持打开&#xff0c;其收到文件传输请求后&#xff0c;就创建数据连接。文件在数据连接上传送完毕后&#xff0c;数据连接就被关闭。
来自&#xff1a;知乎专栏链接
一、介绍一下五层协议
1、应用层&#xff08;对应七层协议中的应用层、表示层、会话层&#xff09; &#xff1a;
为特定应用程序提供数据传输服务&#xff0c;包含的主要协议&#xff1a;FTP&#xff08;文件传送协议&#xff09;、Telnet&#xff08;远程登录协议&#xff09;、DNS&#xff08;域名解析协议&#xff09;、SMTP&#xff08;邮件传送协议&#xff09;&#xff0c;POP3协议&#xff08;邮局协议&#xff09;&#xff0c;HTTP协议&#xff08;Hyper Text Transfer Protocol&#xff09;&#xff0c;数据单位为报文。
2、运输层 &#xff1a;
提供的是进程间的通用数据传输服务。由于应用层协议很多&#xff0c;定义通用的运输层协议就可以支持不断增多的应用层协议。
运输层包括两种协议&#xff1a;
传输控制协议TCP&#xff0c;提供面向连接、可靠的数据传输服务&#xff0c;数据单位为报文段&#xff1b;TCP 主要提供完整性服务.
用户数据报协议UDP&#xff0c;提供无连接、尽最大努力的数据传输服务&#xff0c;数据单位为用户数据报。UDP 主要提供及时性服务。
3、网络层&#xff1a;
为主机间提供数据传输服务&#xff0c;而运输层协议是为主机中的进程提供服务。网络层把运输层传递下来的报文段或者用户数据报封装成分组。
4、数据链路层&#xff1a;
网络层针对的还是主机之间的数据传输服务&#xff0c;而主机之间可以有很多链路&#xff0c;链路层协议就是为同一链路的节点提供服务。数据链路层把网络层传来的分组封装成帧。
5、物理层 &#xff1a;
考虑的是怎样在传输媒体上传输数据比特流&#xff0c;而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异&#xff0c;使数据链路层感觉不到这些差异。
二、说一说OSI七层模型
其中表示层和会话层用途如下&#xff1a;
表示层 &#xff1a;
数据压缩、加密以及数据描述。这使得应用程序不必担心在各台主机中表示/存储的内部格式不同的问题。
会话层 &#xff1a;
建立及管理会话。
其余五层同五层协议。
三、说一说TCP/IP四层模型
TCP/IP参考模型分为四个层次&#xff1a;应用层、传输层、网络互连层和网络接口层。
1、主机到网络层
实际上TCP/IP参考模型没有真正描述这一层的实现&#xff0c;只是要求能够提供给其上层-网络互连层一个访问接口&#xff0c;以便在其上传递IP分组。由于这一层次未被定义&#xff0c;所以其具体的实现方法将随着网络类型的不同而不同。
2、网络互连层
网络互连层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机 网络互连层定义了分组格式和协议&#xff0c;即IP协议&#xff08;Internet Protocol&#xff09;。网络互连层除了需要完成路由的功能外&#xff0c;也可以完成将不同类型的网络&#xff08;异构网&#xff09;互连的任务。除此之外&#xff0c;网络互连层还需要完成拥塞控制的功能。
3、传输层
在TCP/IP模型中&#xff0c;传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即&#xff1a;传输控制协议TCP&#xff08;transmission control protocol&#xff09;和用户数据报协议UDP&#xff08;user datagram protocol&#xff09;。
4、应用层
TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现&#xff0c;为特定应用程序提供数据传输服务。
应用层考点
四、介绍一下域名系统
域名系统(Domain Name System缩写 DNS)是因特网的一项核心服务&#xff0c;它作为可以将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网&#xff0c;而不用去记住能够被机器直接读取的IP数串。一个公司的 Web 网站可看作是它在网上的门户&#xff0c;而域名就相当于其门牌地址&#xff0c;通常域名都使用该公司的名称或简称。例如&#xff1a;IBM 公司的域名是 http://www.ibm.com、Oracle 公司的域名是 http://www.oracle.com。
五、HTTP请求过程
1、建立TCP连接
2、发送请求
一旦建立了TCP连接&#xff0c;Web浏览器就会向Web服务器发送请求命令。
3、发送请求头信息
浏览器发送其请求命令之后&#xff0c;还要以头信息的形式向Web服务器发送一些别的信息&#xff0c;之后浏览器发送了一空白行来通知服务器&#xff0c;它已经结束了该头信息的发送。
4、服务器应答
客户机向服务器发出请求后&#xff0c;服务器会客户机回送应答。
5、服务器发送应答头信息
正如客户端会随同请求发送关于自身的信息一样&#xff0c;服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。
6、服务器向浏览器发送数据
Web服务器向浏览器发送头信息后&#xff0c;它会发送一个空白行来表示头信息的发送到此为结束&#xff0c;接着&#xff0c;它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。
\7. Web服务器关闭TCP连接
一般情况下&#xff0c;一旦Web服务器向浏览器发送了请求数据&#xff0c;它就要关闭TCP连接&#xff0c;如果浏览器或者服务器在其头信息加入了这行代码&#xff1a;Connection:keep-alive 。TCP连接在发送后将仍然保持打开状态&#xff0c;于是&#xff0c;浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间&#xff0c;还节约了网络带宽。
六、简述HTTP中GET和POST的区别
1、从原理性看&#xff1a;
GET用于信息获取&#xff0c;而且应该是安全和幂等的&#xff1b;POST请求表示可能修改服务器上资源的请求
2、从表面上看&#xff1a;
GET请求的数据会附在URL后面&#xff0c;POST的数据放在HTTP包体&#xff0c;POST安全性比GET安全性高。
七、HTTP与HTTPS区别
1、https协议需要到ca申请证书&#xff0c;一般免费证书较少&#xff0c;因而需要一定费用。
2、http是超文本传输协议&#xff0c;信息是明文传输&#xff0c;https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式&#xff0c;用的端口也不一样&#xff0c;前者是80&#xff0c;后者是443。
4、http的连接很简单&#xff0c;是无状态的&#xff1b;HTTPS协议是由SSL&#43;HTTP协议构建的可进行加密传输、身份认证的网络协议&#xff0c;比http协议安全。
运输层考点&#xff1a;
八、请简述一下TCP和UDP&#xff0c;以及它们的区别
TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输&#xff0c;而UDP则常被用于让广播和细节控制交给应用的通信传输。
传输控制协议 TCP&#xff08;Transmission Control Protocol&#xff09;是有连接的&#xff0c;提供可靠交付&#xff0c;有流量控制&#xff0c;拥塞控制&#xff0c;面向字节流&#xff0c;把应用层传下来的报文看成字节流&#xff0c;把字节流组织成大小不等的数据块&#xff0c;每一条 TCP连接只能是点对点的&#xff08;一对一&#xff09;。
用户数据报协议 UDP&#xff08;User Datagram Protocol&#xff09;&#xff1a;无连接的&#xff0c;尽最大可能交付&#xff0c;没有拥塞控制&#xff0c;面向报文对于应用程序传下来的报文不合并也不拆分&#xff0c;只是添加 UDP 首部&#xff0c;支持一对一、一对多、多对一和多对多的交互通信。
总结&#xff08;TCP和UDP的区别&#xff09;&#xff1a;
1&#xff09;TCP提供面向连接的传输&#xff1b;UDP提供无连接的传输
2&#xff09;TCP提供可靠的传输&#xff08;有序&#xff0c;无差错&#xff0c;不丢失&#xff0c;不重复&#xff09;&#xff1b;UDP提供不可靠的传输。
3&#xff09;TCP面向字节流的传输&#xff0c;因此它能将信息分割成组&#xff0c;并在接收端将其重组&#xff1b;UDP是面向数据报的传输&#xff0c;没有分组开销。
4&#xff09;TCP提供拥塞控制和流量控制机制&#xff1b;UDP不提供拥塞控制和流量控制机制。
5&#xff09;TCP只能是点对点的&#xff08;一对一&#xff09;。UDP支持一对一、一对多、多对一和多对多的交互通信。
九、说一说TCP的三次握手
在TCP/IP协议中&#xff0c;TCP协议提供可靠的连接服务&#xff0c;连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。
1、第一步&#xff1a;源主机A的TCP向主机B发出连接请求报文段&#xff0c;其首部中的SYN(同步)标志位应置为1&#xff0c;表示想与目标主机B进行通信&#xff0c;并发送一个同步序列号X(例&#xff1a;SEQ&#61;100)进行同步&#xff0c;表明在后面传送数据时的第一个数据字节的序号是X&#xff0b;1&#xff08;即101&#xff09;。SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号。
2、第二步&#xff1a;目标主机B的TCP收到连接请求报文段后&#xff0c;如同意&#xff0c;则发回确认。在确认报中应将ACK位和SYN位置1&#xff0c;表示客户端的请求被接受。确认号应为X&#xff0b;1(即为101)&#xff0c;同时也为自己选择一个序号Y。
3、第三步&#xff1a;源主机A的TCP收到目标主机B的确认后要向目标主机B给出确认&#xff0c;其ACK置1&#xff0c;确认号为Y&#xff0b;1&#xff0c;而自己的序号为X&#xff0b;1。&#xff08;TCP的标准规定&#xff0c;SYN置1的报文段要消耗掉一个序号。&#xff09;
运行客户进程的源主机A的TCP通知上层应用进程&#xff0c;连接已经建立。当源主机A向目标主机B发送第一个数据报文段时&#xff0c;其序号仍为X&#xff0b;1&#xff0c;因为前一个确认报文段并不消耗序号。
当运行服务进程的目标主机B的TCP收到源主机A的确认后&#xff0c;也通知其上层应用进程&#xff0c;连接已经建立。至此建立了一个全双工的连接。
网络层考点&#xff1a;
十、IP地址分为哪几类&#xff1f;简单说一下各个分类
IP地址分A&#xff0c;B&#xff0c;C&#xff0c;D&#xff0c;E五类&#xff1a;
A类地址以0开头&#xff0c;第一个字节作为网络号&#xff0c;地址范围为&#xff1a;0.0.0.0~127.255.255.255&#xff1b;(modified &#64;2016.05.31)
B类地址以10开头&#xff0c;前两个字节作为网络号&#xff0c;地址范围是&#xff1a;128.0.0.0~191.255.255.255;
C类地址以110开头&#xff0c;前三个字节作为网络号&#xff0c;地址范围是&#xff1a;192.0.0.0~223.255.255.255。
D类地址以1110开头&#xff0c;地址范围是224.0.0.0~239.255.255.255&#xff0c;D类地址作为组播地址&#xff08;一对多的通信&#xff09;&#xff1b;
E类地址以1111开头&#xff0c;地址范围是240.0.0.0~255.255.255.255&#xff0c;E类地址为保留地址&#xff0c;供以后使用。
注&#xff1a;只有A,B,C有网络号和主机号之分&#xff0c;D类地址和E类地址没有划分网络号和主机号。
1、255.255.255.255
该IP地址指的是受限的广播地址。受限广播地址与一般广播地址&#xff08;直接广播地址&#xff09;的区别在于&#xff0c;受限广播地址只能用于本地网络&#xff0c;路由器不会转发以受限广播地址为目的地址的分组&#xff1b;一般广播地址既可在本地广播&#xff0c;也可跨网段广播。例如&#xff1a;主机192.168.1.1/30上的直接广播数据包后&#xff0c;另外一个网段192.168.1.5/30也能收到该数据报&#xff1b;若发送受限广播数据报&#xff0c;则不能收到。
注&#xff1a;一般的广播地址&#xff08;直接广播地址&#xff09;能够通过某些路由器&#xff08;当然不是所有的路由器&#xff09;&#xff0c;而受限的广播地址不能通过路由器。
2、0.0.0.0
常用于寻找自己的IP地址&#xff0c;例如在我们的RARP&#xff0c;BOOTP和DHCP协议中&#xff0c;若某个未知IP地址的无盘机想要知道自己的IP地址&#xff0c;它就以255.255.255.255为目的地址&#xff0c;向本地范围&#xff08;具体而言是被各个路由器屏蔽的范围内&#xff09;的服务器发送IP请求分组。
3、回环地址
127.0.0.0/8被用作回环地址&#xff0c;回环地址表示本机的地址&#xff0c;常用于对本机的测试&#xff0c;用的最多的是127.0.0.1。
附加题&#xff1a;简述一下COOKIE 和 Session的区别
COOKIE 和 Session都是用来跟踪浏览器用户身份的会话方式&#xff0c;但是两者的应用场景不太一样。
COOKIE 一般用来保存用户信息 比如①我们在 COOKIE 中保存已经登录过得用户信息&#xff0c;下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了&#xff1b;②一般的网站都会有保持登录也就是说下次你再访问网站的时候就不需要重新登录了&#xff0c;这是因为用户登录的时候我们可以存放了一个 Token 在 COOKIE 中&#xff1b;③登录一次网站后访问网站其他页面不需要重新登录。Session 的主要作用就是通过服务端记录用户的状态。
COOKIE 数据保存在客户端(浏览器端)&#xff0c;Session 数据保存在服务器端。
COOKIE 存储在客户端中&#xff0c;而Session存储在服务器上&#xff0c;相对来说 Session 安全性更高。如果要在 COOKIE 中存储一些敏感信息&#xff0c;不要直接写入 COOKIE 中&#xff0c;最好能将 COOKIE 信息加密然后使用到的时候再去服务器端解密。
来自&#xff1a;知乎链接