1、计算机网络分哪几层?  OSI、TCP/IP

TCP/IP结构对应OSI

TCP/IP

OSI

应用层

应用层

表示层

会话层

主机到主机层(TCP)(又称传输层)

传输层

网络层(IP)(又称互联层)

网络层

网络接口层(又称链路层)

数据链路层

物理层

OSI中每一层都有每一层的作用

第七层应用层, 直接对应用程序提供服务, 应用程序可以变化, 但要包括电子消息传输

第六层表示层, 格式化数据, 以便为应用程序提供通用接口, 这可以包括加密服务

第五层会话层, 在两个节点之间建立端连接. 此项服务包括建立连接是以全双工方式还是以半双工方式进行设置, 尽管可以在第四层中处理双工方式

第四层传输层, 常规数据传送,面向连接或无连接. 包括全双工或半双工, 流控制或错误恢复服务

第三层网络层, 本层通过寻址来建立两个节点间的连接, 它包括通过互连网络来路由或中继数据

第二层数据链路层, 在此层将数据分 帧, 并处理流控制. 本层指定拓扑结构和提供硬件寻址

第一层物理层, 原始比特流的传输,电子信号传输和硬件接口

TCP/IP每一层的作用

1) 网络访问层(Network Access Layer)
在TCP/IP参考模型中并没有详细描述,只是指出主机必须使用某种协议与网络相连。

2) 互联网层(Internet Layer)
是整个体系结构的关键部分,其功能是使主机可以把分组发往任何网络,并使分组独立地传向目标。
这些分组可能经由不同的网络,到达的顺序和发送的顺序也可能不同。高层如果需要顺序收发,那么就必须自行处理对分组的排序。

互联网层使用因特网协议(IP,Internet Protocol)。TCP/IP参考模型的互联网层和OSI参考模型的网络层在功能上非常相似。

3) 传输层(Tramsport Layer)
使源端和目的端机器上的对等实体可以进行会话。

在这一层定义了两个端到端的协议:传输控制协议(TCP,Transmission Control Protocol)和用户数据报协议(UDP,User Datagram Protocol)。

TCP是面向连接的协议,它提供可靠的报文传输和对上层应用的连接服务。为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。

UDP是面向无连接的不可靠传输的协议,主要用于不需要TCP的排序和流量控制等功能的应用程序。

4) 应用层(Application Layer)

包含所有的高层协议,包括:虚拟终端协议(TELNET,TELecommunications NETwork)、文件传输协议(FTP,File Transfer Protocol)、电子邮件传输协议(SMTP,Simple Mail Transfer Protocol)、域名服务(DNS,Domain Name Service)、网上新闻传输协议(NNTP,Net News Transfer Protocol)和超文本传送协议(HTTP,HyperText Transfer Protocol)等。

TELNET允许一台机器上的用户登录到远程机器上,并进行工作;

FTP提供有效地将文件从一台机器上移到另一台机器上的方法;

SMTP用于电子邮件的收发;

DNS用于把主机名映射到网络地址;

NNTP用于新闻的发布、检索和获取;

HTTP用于在WWW上获取主页。

2、TCP、UDP有什么区别?什么场景使用TCP,什么场景什么UDP?哪些应用层协议使用了TCP,哪些使用了UDP?

区别

TCP

UDP

面向连接、字节流

面向非连接、面向报文

传输可靠、只能是点到点传输

传输不可靠、支持一对一,一对多,多对一和多对多传输

传输大量数据

传输少量数据

速度慢、首部开销20个字节

速度快 、首部开销8个字节

应用场景
TCP UDP

发送消息之类的场景,因为你要确保

用户的消息不会丢失,需要使用TCP协议

进行视频聊天或者看直播,那可以使用UDP协议,因为即使几个画面丢失了,对用户来说影响也不是很大。

3、什么是窗口滑动协议,什么是快速重传,什么是拥塞避免,什么是慢启动?

对于发送端:

  1. 每收到一个确认帧,发送窗口就向前滑动一个帧的距离
  2. 当发送窗口内无可发送的帧时(即窗口内的帧全部是已发送但未收到确认的帧),发送方就会停止发送,直到收到接收方发送的确认帧使窗口移动,窗口内有可以发送的帧,之后才开始继续发送
    具体如下图:

对于接收端:当收到数据帧后,将窗口向前移动一个位置,并发回确认帧,若收到的数据帧落在接收窗口之外,则一律丢弃。

停止等待协议原理ARQ:

  1. 发送方每发送一帧,要等到接收方的应答信号后才能发送下一帧
  2. 接收方每接收一帧,都要反馈一个应答信号,表示可接下一帧
  3. 若接收方不反馈应答信号,则发送方必须一直等待

后退N帧协议:

选择重传ARQ原理(发送窗口大小>1、接收窗口大小>1):

a. 优:因连续发送数据帧而提高了信道的利用率
b. 缺:重传时又必须把原来已经传送正确的数据帧进行重传(仅因为这些数据帧前面有一个数据帧出了错),将导致传送效率降低

由此可见,若信道传输质量很差,导致误码率较大时,后退N帧协议不一定优于停止-等待协议

4、TCP三次握手、四次挥手

为什么TCP建立连接需三次握手?

防止服务器端因接收了早已失效的连接请求报文,从而一直等待客户端请求,最终导致形成死锁、浪费资源

比如:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段,但是server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求,于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了,由于client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据,但server却以为新的运输连接已经建立,并一直等待client发来数据。所以没有采用“三次握手”,这种情况下server的很多资源就白白浪费掉了。
--------------------- 

------------------------------------------------------

为什么需要四次挥手?

TCP是全双工模式,当client发出FIN报文段时,只是表示client已经没有数据要发送了,client告诉server,它的数据已经全部发送完毕了;但是,这个时候client还是可以接受来server的数据;当server返回ACK报文段时,表示它已经知道client没有数据发送了,但是server还是可以发送数据到client的;当server也发送了FIN报文段时,这个时候就表示server也没有数据要发送了,就会告诉client,我也没有数据要发送了,如果收到client确认报文段,之后彼此就会愉快的中断这次TCP连接。
---------------------

5、当你输入域名访问一个网站的时候,背后的过程是什么?

第一步就是域名解析,域名解析的话你可以说一下域名缓存在哪些地方,然后如果你域名在本地没有缓存的话,是如何通过DNS来进行域名解析的,如果你的DNS服务器上没有保存那个域名,那你的DNS服务器将如何处理来得到这个域名的ip。第二步就是说一下TCP连接的三次握手的过程。其他拓展内容有很多可以说,看你知识储备。例如你可以说通过CDN来进行访问加速。也可以说目前网站基本上都是前后端分离的,访问的时候会先访问反向代理服务器进行负载均衡之类的。第三步就是下载js/css/图片等资源进行浏览器渲染。

示意图:

6、什么是https协议?https协议用到了哪种密钥?

换句话说,HTTPS 跟 HTTP 一样,只不过增加了 SSL。

HTTP 包含如下动作:

  1. 浏览器打开一个 TCP 连接
  2. 浏览器发送 HTTP 请求到服务器端
  3. 服务器发送 HTTP 回应信息到浏览器
  4. TCP 连接关闭

HTTP 和 HTTPS 的不同之处

  1. HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
  2. HTTP 是不安全的,而 HTTPS 是安全的
  3. HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
  4. 在 OSI 网络模型中,HTTP 工作于应用层,而 HTTPS 工作在传输层
  5. HTTP 无需加密,而 HTTPS 对传输的数据进行加密
  6. HTTP 无需证书,而 HTTPS 需要认证证书

为什么需要 HTTPS ?

超文本传输协议 (HTTP) 是一个用来通过互联网传输和接收信息的协议。HTTP 使用请求/响应的过程,因此信息可在服务器间快速、轻松而且精确的进行传输。当你访问 Web 页面的时候你就是在使用 HTTP 协议,但 HTTP 是不安全的,可以轻松对窃听你跟 Web 服务器之间的数据传输。在很多情况下,客户和服务器之间传输的是敏感歇息,需要防止未经授权的访问。为了满足这个要求,网景公司(Netscape)推出了HTTPS,也就是基于安全套接字层的 HTTP 协议。

7、什么是socket?

建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

8、什么是IO,什么是NIO,什么是AIO,什么是netty框架?

牛客网面经题题目及答案总结-计算机网络篇相关推荐

  1. 牛客网面经题题目及答案总结-数据库篇

    1.数据库常用操作 2.什么是左连接,什么是右连接,什么是全连接,什么是内连接? 3.数据库的事务有哪些特性? 主要有四个特性,ACID,原子性(Atomicity).一致性(Consistency) ...

  2. 牛客网面经题题目及答案总结-操作系统篇

    1.进程和线程的区别是什么? 进程是CPU分配资源的最小单元,线程是CPU调度的基本单元.一个进程可以包含多个线程 (1).进程是资源分配的最小单位,线程是程序执行的最小单位. (2).进程有自己的独 ...

  3. 牛客网校招题题目收集----数据结构与算法篇

    选择题 a,b,c,d,e 对应出现的频率为4,6,11,13,15:以下符合哈夫曼编码的选项是?() A. a=000.b=01.c=001.d=10.e=11 B. a=000.b=001.c=0 ...

  4. python简单实践作业答案_python入门实践四:爬取牛客网面试专项练习题及答案

    说明:个人练手python用. 操作系统:window10 x64 IDE:Pycharm 2017.2.2 Python版本:3.6.2 目标 牛客网是一个IT笔试面试的平台,提供了很多题库,今天我 ...

  5. 牛客网C语言题目练习

    牛客网C语言专题练习 BC1 实践出真知 BC2 我是大V BC3 有容乃大 BC6 小飞机 BC7 缩短二进制 BC8 十六进制转十进制 BC9 十六进制转十进制 BC11 学生基本信息输入输出 B ...

  6. 牛客网-数据结构笔试题目(七)-k-amazing数字求解

    题意 给定n个数构成的数字,我们定义一个k-amazing数的概念.如果数a同时出现在数组中所有k个连续元素构成的序列当中,并且a是其中最小的那个,那么就称为a是一个k-amazing数字. 我们抽象 ...

  7. 牛客网-数据结构笔试题目(八)-离子能力跃迁问题求解

    题意 有一个人在玩一个离子激活的游戏,题目的背景是模拟的化学当中的离子能量跃迁.在化学当中,离子吸收能量可以从低能态跃迁到高能态,并且放出一定的能量. 现在有N粒离子排成一排(下标1-N),每一个离子 ...

  8. 牛客网-数据结构笔试题目(六)-最近点对问题求解思路

    题意 我们先来看下题意吧,题意很简单,在一个平面当中分布着n个点.现在我们知道这n个点的坐标,要求找出这n个点当中距离最近的两个点的间距. 分治法 如果我们仔细思考一下,会发现这个问题和排序其实非常类 ...

  9. 牛客网-数据结构笔试题目(五)-动态规划问题求解

    题意 给定n个整数,对于这n个整数我们可以采取两种操作.第一种操作是在数组左侧选择连续的k个整数减1,第二种操作是选择右侧的连续k个整数减1. 比如假设数组是[3, 2, 2, 1, 4],比如我们选 ...

最新文章

  1. Springboot启动原理解析
  2. 如何阅读一份深度学习项目代码?
  3. mysql一个死锁分析
  4. ElasticJob corn定时表达式语法(亲测)
  5. django学习笔记之forloop
  6. 在MapPath的Path参数中不允许字符'..',解决方法。
  7. C语言_选择结构的程序设计
  8. 095实战 ETL的数据来源,处理,保存
  9. 学会Git玩转Github笔记(三)—— Github Pages 搭建个人网站
  10. 60.Linux 启动过程
  11. 拓端tecdat|用R语言用Nelson Siegel和线性插值模型对债券价格和收益率建模
  12. C++学习(四五七)查看dll的几种方式
  13. 加什么地形就看什么等高线!等高线实时预览就是这么爽
  14. 中心极限定理和Berry-Esseen中心极限定理
  15. Android APK 反编译浅入浅出:apktool 、dex2jar 、jd-gui
  16. C++封装dll供C#调用获取U盘/磁盘序列号信息
  17. 英语计算机工程师求职信,计算机工程师英文求职信范文
  18. 如皋中学2021高考成绩查询,喜报!如皋八所高中高考成绩公布
  19. ios控制中心android版,控制中心iOS13
  20. vector 中元素的删除

热门文章

  1. 英雄联盟游戏环境异常
  2. Python金融数据分析(一)
  3. android培训总结范文,android培训基础知识总结
  4. 如何使用 S3CMD 访问 COS 服务
  5. 事务的四大特性及实现原理
  6. 关于多线程中sleep、join、yield的区别
  7. Codeforces896A Nephren gives a riddle
  8. 分布式限流实战--redis实现令牌桶限流
  9. (JAVA)支付宝小程序登录相关(authToken获取用户唯一userId、encryptedData解密手机号)
  10. 防护热板法导热仪升级改造:热板电功率和护热温度的超高精度PID控制