| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 233-Linux tcp通信 -> 正文阅读 |
|
[系统运维]233-Linux tcp通信 |
1.客户端connect开始执行三次握手,客户端close开始执行四次挥手 2.tcp的服务器端和客户端是面试的时候最有可能考的,必须要会 3.什么情况下会导致服务器端bind绑定的时候失败? 答案:端口被占用或者ip地址错误 4.服务器端listen函数中的第二个参数在Linux系统中指的是已完成三次握手的队列的长度,在Unix系统中指的是未完成三次握手队列和已完成三次握手队列大小之和 6.recv和send函数的第四个参数的标志位都是0就可以了 7.什么情况下客户端connect会出错? 答案:服务器关闭,客户端连接的端口和服务器设置的端口不一致,ip输入错误 8.当只./ser运行服务器端时,服务器端阻塞在了accept函数的位置,再运行客户端./cli时,accept成功返回一个连接套接字c = 4,此时服务器端阻塞在recv函数,客户端阻塞在fget这里 11.客户端close完成2次挥手后,客户端的进程并不会立即结束,而是等待四次挥手结束后,客户端的进程才会结束 12.四次挥手可以是三次吗? 答案:是可以的,第二次和第三次可以合到一起,当服务器收到客户端的FIN时,恰巧服务器也要关闭了,那么就可以把ACK和FIN一起发给客户端,就是三次,但是一般情况下是不会合在一起的,一般情况下都是四次 13.tcp为什么是可靠的? 答案:①应答确认②超时重传③去重④乱序重排⑤滑动窗口来实现流量控制 ①应答确认 ②超时重传 ③去重 答案:实际上是不会的,③tcp还有一个功能就是去重,因为每发一个报文它都有一个序号在里面,这个序号可以唯一标识一个报文,tcp发现如果两个报文的序号值是相同的,说明它们是同一个报文,它就会自动帮我们丢弃一个 ④乱序重排 答案:不一定 ⑤滑动窗口来实现流量控制 14.tcp的开销很大 15.滑动窗口 TCP 协议是利用滑动窗口实现流量控制的。一般来说,我们总是希望数据传输得更快一些,不会一次只发一个字节。但是如果发送方把数据发得过快,接受方就可能来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收 在 TCP 的报头中有一个字段叫做接收通告窗口,这个字段由接收端填充,是接收端告诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。所以发送端就会有一个发送窗口,这个发送窗口的大小是由接收端填充的接收通告窗口的大小决定的,并且窗口的位置会随着发送端数据的发送和接收到接收端对数据的确认而不断的向右滑动,将之称为滑动窗口 只有窗口内的数据才可以发送出去,窗口的大小就是允许一次性发送的最大数据 注意:helloabcdtest在TCP发送缓冲区中并不能区分hello是一个整体还是helloab是一个整体 粘包:发送端三次发送(第一次hello、第二次abcd、第三次test)的数据helloabcdtest被接收端一次recv就全部接收了,这个就叫做粘包,粘包有时候有影响,有时候没有影响 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 3:39:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |