网络中的那点知识2
来源:互联网 发布:保洁派单软件 编辑:程序博客网 时间:2024/06/05 18:07
上一篇博文讲到一些基础的网络知识,有些细节未交代清楚,这里给出几个问题的细节解释
为什么需要三次握手才能完成连接工作?
三次握手主要是防止失效的连接请求对服务端性能的影响。假设一个场景,A作为一个请求方,发送一个请求连接,结果这个请求连接由于网络阻塞等状况,没有到达接收方B;于是A再次发送一个请求连接,这个请求连接和B三次握手后建立连接。如果A发送的被阻塞的请求连接在网络中被丢弃,那么就不会有影响。而如果阻塞的请求连接过了一定时间后到达了B,这时B以为A要进行连接,于是发送ack,处于ESTABLISH状态,而A由于已经重新发送了请求连接,对于此次B发送的ack信号A不会做任何处理,然而B已经处于连接建立状态了,B将会一直处于连接建立状态,因此会造成服务端资源的浪费。
流量控制与拥塞控制是什么,怎么实现的?
流量控制是接收方用来限制发送方过快发送数据导致本地缓存区溢出情况的发生。注意到tcp头部信息中有一个窗口字段,在三次握手建立连接时,接收方需要将自己的窗口大小传给发送方,而在每次确认数据收到后都要将自己剩余的窗口大小传给发送方。当接收方发现窗口大小为0后,停止发送等待,直到接收方处理并清空缓存区的内容后,发送一个窗口值大于0的消息,A收到后继续发送数据。
拥塞控制用于避免网络拥堵的发送。主要有四个算法支撑,慢开始、拥塞避免、快重传、快恢复。流程如下。假设我们以1为单位表示发包大小,发包开始使用慢开始算法,从1开始发包,以指数形式增加发包大小,直到达到慢开始的阈值,然后以拥塞避免算法继续发包;拥塞避免算法使用线性增加的方式发包,每次只增加一个单位,直到发现网络出现拥塞情况,此时将发包大小减小到1,以慢开始算法继续发包。快重传则要求发包按照一定的顺序进行,如果发送过程中某个包丢失,要是接收方连续收到三个丢失包前一序号包的确认消息,则重新发送丢失的包;重新发送包的同时,减小发包的大小至拥塞窗口的一半,然后以拥塞避免算法继续发包。ip的相关知识
ip是连入网络的主机在全网状态下的唯一地址。目前ip地址使用4字节表示,但四字节的ip地址在现有网络状态下几乎快被分配完全,因此转向16字节的ip地址。
四字节的ip地址分为A、B、C、D、E五类
相关信息:http://blog.csdn.net/ylqmf/article/details/4970213DNS的传输层
DNS的传输层既有TCP又有UDP,是比较特殊的一个应用层协议。TCP应用于局域DNS的通信,UDP用于主机DNS的解析。DNS服务器分为主服务器与辅助DNS服务器,主服务器从自己的数据文件中读取DNS信息,辅助服务器从主服务器中读取DNS信息,这个过程是由辅助服务器主动发出同步数据信息,由于数据量可能很大,需要分片传输,因此使用可靠的TCP协议更加方便(UDP不提供可靠的传输,所以传输过程中不要使UDP数据报分片)。而主机进行DNS解析时,发送的数据量不会很大,而且基于传输速度、服务器负载、响应等的考虑,使用udp更有利。
- 网络中的那点知识2
- 网络中的那点知识
- 网络那点事情
- 网络知识普及:双网卡下知识知多少,路由表及网关那点事
- Redis那点小知识。
- 关于Web安全的那点知识
- MySQL 索引的那点知识
- MySQL 存储过程的那点知识
- JSP中的那点事
- RAM中的那点事~~
- 面试中的那点事
- 工作那点事2(项目中的“移花接木”)
- Netty那点事(2)Netty中的buffer
- 网络开始的那点事
- 网络那点事--浓缩的HTTP.
- 网络、线程、UI的那点事
- 关于网络层的那点事
- 网络同步的那点事
- 颜色选择标本
- 网络流总结
- Python中基本数据存储结构列表、元组和字典
- 0409 css选择器
- PowerShell中更新帮助手册
- 网络中的那点知识2
- 混乱的学习历程 list。爬取58同城二手房,判断列表内字符串位置用(列表名).index(字符串名)
- 异常
- 关于node.js中文乱码
- 安卓rotation旋转动画模仿QQ音乐相册转动
- myeclipse中的jsp设置默认打开方式和打开编码
- PAT_乙级训练记录 (B1001)
- Servlet詳解
- 按位与、或、异或等运算方法