1、TCP三次握手、四次分手。

TCP三次握手:

假设主机A为客户端,主机B为服务器端。三次握手的过程:主机A向主机B发送连接请求,主机B对收到的主机A的报文段进行确认,主机A再次对主机B的确认进行确认。

目的:为了防止已经失效的连接请求报文段突然又传到服务器端,因而产生错误。《计算机网络》例子:A向B发送的连接请求SYN报文段滞留在网络中的某处。于是A超时重传,与B建立了TCP连接,交换了数据,最后也释放了TCP连接。但滞留在网络中某处的陈旧的SYN报文段,现在突然传送到B了。如果不使用三次握手,那么B就以为A现在再次建立TCP连接,于是就分配资源,等待A传送数据。但A并没有想要建立TCP连接,也不会向B传送数据,B就白白等待A发送数据。浪费了资源。

TCP四次握手:四次握手过程:主机A向主机B发送关闭请求,主机B对收到的主机A的报文段进行确认,主机B向主机A发送关闭请求,主机A对收到的主机B的报文段进行确认。

为什么建立连接是三次握手,而关闭连接却是四次挥手?这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。

2、TCP/IP的流量控制?

使用滑动窗口实现流量控制,如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。是一种端到端的控制。

主要方式:返回的ACK中会包含自己的接收窗口的大小,并且利用大小来控制发送方的数据发送。

1) 1比特滑动窗口协议

当发送窗口和接收和接收窗口固定为1时,滑动窗口协议退化为停等协议。该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认返回后 才能继续发送下一帧。

2)后退n协议

发送方在发完一个数据帧后,不停下来等待应答帧,而是连续发送若干个数据帧,即使在连续发送过程中受到了接收方发来的应答帧,也可以继续发送。且发送方在每发送完一个数据帧时都要设置超时定时器。只要在所设置的超时时间内仍收到确认帧,就要重发相应的数据帧以及之后的所有帧。

接收方若发现错误帧就不再接收后续的帧,即使是正确到达的帧。这显然是一种浪费。

3)选择重传协议

在后退n帧协议基础上改进,当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给高层,但接收方仍可接收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧。一旦收到重新传来的帧后,就可以将缓冲区中其余帧一并按正确的顺序递交高层。

选择重发减少了浪费,但要求接收方有足够大的缓冲区空间。

3、TCP拥塞控制?

防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不止于过载。

主要方式:1)慢开始、拥塞避免  2)快重传、快恢复

发送方维持一个叫做拥塞窗口的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口,另外考虑到接收方的接收能力,发送窗口可能小于拥塞窗口。

慢开始算法就是:先探测一下,由小到大逐渐增大发送窗口,也就是说,由小到大逐渐增大拥塞窗口数值。通常在刚刚开始发送报文段时,先把拥塞窗口cwnd设置为一个最大报文段MSS数值。而在每收到一个对新的报文段的确认后,把拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送方拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。(指数增长)

拥塞避免算法就是:每经过一个往返时间RTT就把发送方的拥塞窗口+1,即让拥塞窗口缓慢地增大,按照线性规律增长。当出现网络拥塞,比如丢包时,将慢开始门限设为原先的一半,然后将cwnd设为1,执行慢开始算法。

拥塞窗口cwnd和慢开始门限ssthresh状态变量的关系如下:当cwnd

当cwnd>ssthresh时,停止使用慢开始算法而改用拥塞避免算法。

当cwnd=ssthresh时,即可使用慢开始算法,也可使用拥塞控制避免算法。

快重传的机制是:接收方如果发现一个包丢失,则对后续的包继续发送针对该包的重传请求;一旦发送方接收到三个一样的确认,就知道该包之后出现了错误,立刻重传该包;此时发送方开始执行“快恢复”算法:a.慢开始门限减半;b.cwnd设为慢开始门限减半后的数值;c.执行拥塞避免算法(线性增长)

当rwnd

当cwnd

拥塞控制并非可以避免拥塞,而是将拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。

php面试会考计算机网络,计算机网络常见面试题整理相关推荐

  1. 常见面试题整理--操作系统篇(每位开发者必备)

    这两日整理了很多编程方面的资料:教学视频.书籍资源以及实战项目全部放在了百度网盘里,资源的目录以及获取方式都放在了文末的图上,你可以直接翻至文末查看. 有过面试经历的人都知道操作系统是面试官必问的几大 ...

  2. 常见面试题整理--数据库篇(每位开发者必备

    常见面试题整理--数据库篇(每位开发者必备) 转载自:https://zhuanlan.zhihu.com/p/23713529        知乎专栏 继续前面有关于的Python面试的两篇内容:P ...

  3. 面:常见面试题整理(操作系统)

    常见面试题整理(操作系统) 常见面试题整理(操作系统) 2018年03月08日 20:47:11 逃离地球的小小呆 阅读数:20782 (一)请分别简单说一说进程和线程以及它们的区别. 进程是具有一定 ...

  4. Java常见面试题整理(一)

    Java常见面试题整理 字符串 抽象类与接口 集合 多线程 锁 IO流 网络编程 字符串 主要包括String.StringBuffer和StringBuilder基本概念 String相关知识 St ...

  5. 【JAVA秒会技术之秒杀面试官】JavaSE常见面试题(四)

    [前言]别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 --   [下载]本人刚学习Jav ...

  6. java多线程常用面试_java的多线程常见面试题

    并行和并发有什么区别? (推荐学习:java常见面试题) 并行是指两个或者多个事件在同一时刻发生:而并发是指两个或多个事件在同一时间间隔发生. 并行是在不同实体上的多个事件,并发是在同一实体上的多个事 ...

  7. 【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(六)

    [前言]别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 --   [下载]个人结合诸多资料 ...

  8. java ee笔试题_【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(六)

    [前言]别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 -- [下载]个人结合诸多资料,总 ...

  9. 操作系统常见面试题整理

    (一)请分别简单说一说进程和线程以及它们的区别. 进程是具有一定功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源调度和分配的一个独立单位. 线程是进程的实体,是CPU调度和分派的基本单位 ...

  10. (操作系统) 常见面试题整理

    (一)请分别简单说一说进程和线程以及它们的区别. 进程是具有一定功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源调度和分配的一个独立单位. 线程是进程的实体,是CPU调度和分派的基本单位 ...

最新文章

  1. Linux中查看各文件夹大小(扫盘)
  2. 红外测试操作步骤_红外光谱仪操作规程
  3. Django之orm补充
  4. python tensorflow 智能家居_TensorFlow平台下的视频目标跟踪深度学习模型设计
  5. 小积累-生成固定位数的随机数
  6. ndk-build官方使用说明
  7. 使用rundll32.exe绕过应用程序白名单(多种方法)
  8. 运行QTP测试脚本后,将编译结果写入指定文件(四)
  9. web项目测试方法总结
  10. linux字体使用教程,Ubuntu 字体设置:使用Windows 字体
  11. Opencv系列1_opencv对单张DCM文件的读取并显示
  12. 《邪不压正》里面究竟谁是真正的隐侠,蓝青峰究竟是正是邪?
  13. mac 远程连接 Windows 桌面
  14. [Mark]The problems solutions of vmware vsphere
  15. java里面case是什么意思_什么是Java中的switch case语句以及如何使用它?
  16. Thompson Sampling(汤普森采样)
  17. 安全方向比路由交换难吗_致网络工程师,新网工时代轻松拿下思科全新CCIE EI等各方向认证...
  18. Unity简单实现老虎机抽奖效果
  19. 芯盾时代: 开启“智慧身份认证”新时代
  20. Simcenter Flotherm XT案例练习

热门文章

  1. surface php老是用不了,surface启动一直进入uefi怎么办
  2. 在GitHub上建立自己在线简历
  3. 如何修改anaconda的文件目录_Anaconda安装的常见错误和python的基础知识
  4. matlab处理矩阵的一些简易操作和画图的一些小技巧
  5. 华为任命徐直军为华为云董事长,余承东任CEO | 任正非:做事要充满霸气,做人一定要谦卑!...
  6. 魔兽世界8.0哪个服务器稳定,魔兽世界活得最安逸的BOSS!8.0版本才拿到7.0服务器首杀!...
  7. 德军总部2新巨人计算机丢失,德军总部2新巨人打不开怎么办 德军总部2新巨像进不去解决方法...
  8. vs2017部分快捷键
  9. matlab2016与VS2019混合编程
  10. mysql日期 select_MySQL_MySql日期查询语句详解,使用DATE_FORMAT方法SELECT * FROM `le - phpStudy...