我用的是谢希仁的教材,是一本绿色的厚厚的书。在复习的过程中听说还有一本《图解TCP/IP》我下载了电子版看了看,给自己讲了一遍,觉得这个本书适合。

  1. Http和Https的区别
    Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。二者之间存在如下不同:
    端口不同:Http与Http使用不同的连接方式,用的端口也不一样,前者是80,后者是443;
    资源消耗:和HTTP通信相比,Https通信会由于加减密处理消耗更多的CPU和内存资源;
    开销:Https通信需要证书,而证书一般需要向认证机构购买;
    Https的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。
  2. 对称加密与非对称加密
    对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。
    由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
  3. 三次握手(我要和你建立链接,你真的要和我建立链接么,我真的要和你建立链接,成功):
    第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
    第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
    第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了
  4. 四次挥手(我要和你断开链接;好的,断吧。我也要和你断开链接;好的,断吧):
    第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
    第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。此时TCP链接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。
    第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
    第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
  5. 为什么TCP链接需要三次握手,两次不可以么,为什么?
    为了防止 已失效的链接请求报文突然又传送到了服务端,因而产生错误。
    客户端发出的连接请求报文并未丢失,而是在某个网络节点长时间滞留了,以致延误到链接释放以后的某个时间才到达Server。这是,Server误以为这是Client发出的一个新的链接请求,于是就向客户端发送确认数据包,同意建立链接。若不采用“三次握手”,那么只要Server发出确认数据包,新的链接就建立了。由于client此时并未发出建立链接的请求,所以其不会理睬Server的确认,也不与Server通信;而这时Server一直在等待Client的请求,这样Server就白白浪费了一定的资源。若采用“三次握手”,在这种情况下,由于Server端没有收到来自客户端的确认,则就会知道Client并没有要求建立请求,就不会建立链接。
  6. TCP协议如何来保证传输的可靠性
    TCP提供一种面向连接的、可靠的字节流服务。其中,面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信;而字节流服务意味着两个应用程序通过TCP链接交换8bit字节构成的字节流,TCP不在字节流中插入记录标识符。
    对于可靠性,TCP通过以下方式进行保证:
    数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据端超时后会重发数据;
    对失序数据包重排序:既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对失序数据进行重新排序,然后才交给应用层;
    丢弃重复数据:对于重复数据,能够丢弃重复数据;
    应答机制:当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;
    超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;
    流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。
  7. DDos 攻击
    客户端向服务端发送请求链接数据包
    服务端向客户端发送确认数据包
    客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认
  8. Get与POST的区别
    GET与POST是我们常用的两种HTTP Method,二者之间的区别主要包括如下五个方面:
    (1). 从功能上讲,GET一般用来从服务器上获取资源,POST一般用来更新服务器上的资源;
    (2). 从REST服务角度上说,GET是幂等的,即读取同一个资源,总是得到相同的数据,而POST不是幂等的,因为每次请求对资源的改变并不是相同的;进一步地,GET不会改变服务器上的资源,而POST会对服务器资源进行改变;
    (3). 从请求参数形式上看,GET请求的数据会附在URL之后,即将请求数据放置在HTTP报文的 请求头 中,以?分割URL和传输数据,参数之间以&相连。特别地,如果数据是英文字母/数字,原样发送;否则,会将其编码为 application/x-www-form-urlencoded MIME 字符串(如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII);而POST请求会把提交的数据则放置在是HTTP请求报文的 请求体 中。
    (4). 就安全性而言,POST的安全性要比GET的安全性高,因为GET请求提交的数据将明文出现在URL上,而且POST请求参数则被包装到请求体中,相对更安全。
    (5). 从请求的大小看,GET请求的长度受限于浏览器或服务器对URL长度的限制,允许发送的数据量比较小,而POST请求则是没有大小限制的。
  9. TCP与UDP的区别
      TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议,它们之间的区别包括:
    TCP是面向连接的,UDP是无连接的;
    TCP是可靠的,UDP是不可靠的;
    TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式;
    TCP是面向字节流的,UDP是面向报文的;
    TCP有拥塞控制机制;UDP没有拥塞控制,适合媒体通信;
    TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大
    TCP的拥塞处理
      计算机网络中的带宽、交换结点中的缓存及处理机等都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏,这种情况就叫做拥塞。拥塞控制就是 防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。注意,拥塞控制和流量控制不同,前者是一个全局性的过程,而后者指点对点通信量的控制。拥塞控制的方法主要有以下四种:
  10. 1). 慢启动:不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小;
    2). 拥塞避免:拥塞避免算法让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,这样拥塞窗口按线性规律缓慢增长。
    快重传:快重传要求接收方在收到一个 失序的报文段 后就立即发出 重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。
    快恢复:快重传配合使用的还有快恢复算法,当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半,但是接下去并不执行慢开始算法:因为如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方现在认为网络可能没有出现拥塞。所以此时不执行慢开始算法,而是将cwnd设置为ssthresh的大小,然后执行拥塞避免算法。

考研复试-计算机网络面试相关推荐

  1. 计算机专业研究生面试英语翻译,20考研复试英语面试最强攻略,都是干货!

    原标题:20考研复试英语&面试最强攻略,都是干货! 考研初试千辛万苦通过,成功就在眼前,可是偏偏中间还有复试英语这个拦路虎,复试中的英语环节每年让不少同学都很紧张, 要想对答如流,顺利跨过这条 ...

  2. 计算机推免英语复试问题,干货:考研复试英语面试中最常被问到的7个问题,附上回答模板...

    考研成绩都已经出来好多天了,相信很多考生都在焦急地等待国家线,在此期间,不妨好好准备复试,除非你的成绩连2019年二区国家线都上不了,顺利进入复试那是极好的,就算调剂也还是得复试.复试成绩的优劣最终也 ...

  3. 三大技能英语计算机,2018计算机考研复试综合面试顺利通过的三大技能你值得拥有...

    考研复试综合面试很重要,如何表现优秀,让导师青睐中公计算机考研准备了2018计算机考研复试综合面试顺利过的三大技能你值得拥有.小编还为大家精心准备了计算机考研复习资料还有计算机考研报考指导助力你的考研 ...

  4. 计算机考研复试综合面试,2019考研计算机复试综合面试顺利通过的三大技能

    考研复试综合面试很重要,如何表现优秀,让导师青睐,新东方在线准备了2019计算机考研复试综合面试顺利通过的三大技能你值得拥有. 第一,面试第一感觉很重要,要注意个人仪表.穿着和礼仪.大家不用过分的去收 ...

  5. 计算机前沿知识复试,2019计算机考研复试综合面试顺利通过的三大技能你值得拥有...

    考研复试综合面试很重要,如何表现优秀,新东方在线准备了2019计算机考研复试综合面试顺利通过的三大技能你值得拥有. 第一,面试第一感觉很重要,要注意个人仪表.穿着和礼仪.大家不用过分的去收拾打扮自己, ...

  6. 《数据库》_考研复试_面试篇

    前言: 本人为20考研党,所考专业为计算机科学与技术,考虑到线上复试笔试会更加侧重概念的考察,在复试准备期间找了大量笔试题,面试题,整理了很多资料. 本文作为本人的考研复试收尾笔记,主要概括了数据库在 ...

  7. 考研复试专业课面试——C++

    记:此篇博客是关于考研复试中专业课面试的相关知识点,按个人理解以及网上查资料来总结的,用来锻炼自己的逻辑思维,可能不太准确,希望指正. 1.什么是虚函数和纯虚函数? 基类指针可以指向其公有派生类对象, ...

  8. 考研复试专业课面试——数据结构

    记:此篇博客是关于考研复试中专业课面试的相关知识点,按个人理解来总结的,用来锻炼自己的逻辑思维,可能不太准确,希望指正. 1.数组和链表的区别? 从逻辑结构来看:数组的存储长度是固定的,它不能适应数据 ...

  9. 计算机考研复试计算机网络常见面试题

    本文是我2021年考研时准备的复试面试题,现在拿出来给大家分享一下 觉得好的点个赞哦,毕竟当初我也是整理了好久,改了好几次版本呢 祝大家都上岸!!!! 计算机网络 目录 1.TCP三次握手建立连接 1 ...

最新文章

  1. xMedia来了!支付宝客户端的智能化“武器”
  2. 不会发布npm包?进来看看?
  3. 知名大学硕士生被通报,这件事千万别做!
  4. [转载] Java StringBuilder StringJoiner
  5. html新一代网页播放器源码 未加密
  6. 《深入浅出DPDK》读书笔记(一):基础部分知识点
  7. CDays–5 习题二(利用Python科学计算特性,使用常用计算符)及相关内容解析。...
  8. 如何建立最初的三层架构[转]
  9. spring和mybatis结合做简单的增删查改系统_搭建后台系统权限系统的经验总结
  10. Python3 字符串操作
  11. 8.2、磁盘、目录和文件计算
  12. java单词200个,请收藏!贼有用
  13. speedoffice(Excel)表格如何添加边框?
  14. 谱聚类算法入门教程(三)—— 求f^TLf的最小值
  15. 使用RxJava的retryWhen操作符实现token过期自动刷新
  16. 小孟网站被黑客攻击,已经哭晕在厕所……
  17. [001]code blocks - error: expected identifier or ‘(‘ before ‘int‘|
  18. 电脑办公利器 屈指可数的软件!
  19. 实验室天平台制作要求
  20. 当你敲完Hello World后的第一步——C

热门文章

  1. 为什么玩家都对光线追踪爱不释手?
  2. mysql中的几种join 及 full join问题
  3. JAVA毕业设计数据分析星辰网智能手机销售网站计算机源码+lw文档+系统+调试部署+数据库
  4. Linux算时差方法
  5. java毕业设计——基于JSP+sqlserver的网络在线考试系统设计与实现(毕业论文+程序源码)——在线考试系统
  6. MyBatis——配置文件完成增删改查——查询
  7. 雷蛇灵刃Razer Blade 16 2023 [RZ09-0483] win11原厂oem系统
  8. DirectX 9 入门(一)
  9. 领英常见问题-如何创建公司主页与投票,提高账号的曝光率
  10. Yolov5轻量化:MobileNetV3,轻量级骨架首选