最后更新:2022-07-29 01:27:20 手机定位技术交流文章
我以前学过很多网络层协议,例如IP协议、arp协议、icmp协议等。接下来,我们将研究TCP/IP五级协议中的三级传输协议:TCP协议和UDP协议。在TCP协议中,三个或四个握手是很重要的。
传输层协议包括TCP和UDP
选择传输层的协议取决于应用层的特性和业务特性
传输层的作用:IP层提供点到点连接,传输层提供端到端连接
不同的应用程序监控不同的端口,以不同的端口编号区分它们,并以不同的端口编号连接应用程序层和传输层
socket 套接字: ip+port 192.168.0.1:80 -->一个程序占用一个ip地址的一个端口号
访问这个音节是访问一个程序
在传输层中的经典端口数目比较:
http 80 -TCP
mysql 3306 -TCP
ssh 22 - TCP(秘密转让)
ftp 21 -TCP
telnet 23 - TCP(远程控制,纯文本传输,不安全)
SMTP25-TCP(发送邮件)
pop3 110 - TCP(邮件接收)
dns 53 - TCP(dns主机与服务器之间的数据传输)
dns 53 - UDP(UDP在域名分析中)
QQ 8000 -UDP
dhcp 67 -UDP
ntp(网络时间协议) 123 -UDP
TCP(Transmission Control Protocol):面向连接,可靠,手续多,但是速度慢(可以比喻成打电话)
特点:
UDP(User Datagram Protocol):没有连接,不可靠,没有手续,而且更快(例如发送短信)
QQ,dhcp是UDP,QQ服务器的端口号码是800
特点:
TCP加密格式:加密头字为20字节(IP头字也是20字节,帧头字为18字节)
教师书中的序列数和确认数的分析:
拥挤窗口拥挤窗口
中间链的宽度很窄,传输过程中的窗口的大小取决于拥挤窗口的大小(称为cwnd),这决定了滑动窗口的大小
交通堵塞控制的四个算法(交通堵塞解决方案的四个阶段):
1)慢启动;
2)拥塞避免;
3)交通堵塞发生(快速重复);
4)快速恢复
控制TCP错误有三个方法:
服务器和客户端通过三个握手建立连接,那么三个握手的具体过程是什么?
至于三个手,我理解如下:
首先,我们假设有客户A和服务器B,现在A想要访问B,所以首先我们需要连接到B。
当服务端和客户端的数据传送完成之后,便要断开连接,这个连接可以是客户端主动叉掉页面断开的,也可以超过连接时间了,服务端主动断开的,接下来我以客户端主动断开为例来说明这个过程:
刚开始的时候,双方都处于established状态。

为什么三次握手?
三个握手的目的在于建立一个可靠的通讯渠道,在沟通方面,它只是发送和接收数据,而三个握手的主要目的是双方确认自己和对方的发送和接收是正常
发送者: 不能确认任何东西; 接收者: 对方正常发送, 正常接受
发送者: 发送者接受正常, 接受正常, 发送正常, 接受正常; 接收者: 发送者接受正常, 接受正常
第三手握手,发送者:发送者正常接受,发送者正常接受;接收者:发送者正常接受,发送者正常接受
你为什么在连接时摇晃三次,在关闭时摇摆四次?
因为当服务器端从客户端端接收SYN连接请求消息时,您可以直接发送SYN+ACK消息。其中ACK声明用于答复,SYN消息用于同步。但是关闭连接时,当服务器端接收 FIN消息时,它可能不会马上关闭SOCKET,所以你只能先回答ACK消息,告诉客户结束,“我收到你寄来的财务报告。”只有在我服务器端的所有消息才被发送,我可以寄出财务报表,因此不能一起发送。故需要四步握手。
问题3为什么 TIME_WAIT状态需要通过2MSL(最大报告期间存活时间)才能返回CLOSE状态?
答:虽然按道理,所有四份报告都已送达,我们可以直接进入CLOSE状态,但我们必须假设网络不可靠。这是你输掉的最后的ACK。因此, TIME_WAIT状态被用来检索可能丢失的ACK消息。向客户发送最后的ACK响应,但ACK可能丢失。如果服务器没有收到ACK,最后的片段将被重复发送。因此客户不能立即关闭,它必须确认服务器已经收到ACK。客户端在发送ACK后进入 TIME_WAIT状态。客户端将设置一个计时器,等待2MSL时间。如果在该期间再次收到 FIN,然后客户端将重新启动ACK并再次等待2MSL。所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个网络中的断片最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。timewait理论上最长等待4分钟。
你为什么不能用两手做联系?
答:3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
现在把三个手换成两个,死锁是可能发生的。作为例子,考虑计算机S和C之间的通信,假设C发送S一个连接请求子集,S收到了这个分组,同时 向 反应 单位 发出 了 确认 。根据双方的协议,S 认为, 该 联系 已 成功 地 建立,你可以开始发送数据子集。可是,C 若S 的响应子集在传输中丢失,我们不知道S是否准备好,我不知道S是怎样的序列数,C甚至怀疑S是否收到自己的连接请求分组。在这种情况下,C 认为, 尚未 成功 地 建立 联系,会忽略S发送的任何数据子集,只等待由子组答复的连接确认.在S被发送后,分组加班,重复发送相同的子组。这样就形成了死锁。
如果连接已经建立,但客户端突然失败,怎么办?
TCP还有一个实时计时器,显然,如果客户端失败,服务器不能永远等待,白白浪费资源。每次服务器收到客户端的请求,它会重新设置计时器,时间通常定为2小时,如果客户两个小时没有收到任何数据,服务器将发送检测信息,随后,每75秒发送一次消息。如果一行中发送了10个检测消息,但仍没有响应,服务器假设客户端有故障,接着就关闭连接。
问6为什么服务器等待时间比平常多?
时滞发生在四手挥手的主动断开侧面,更多的等待意味着更多的服务会被中断,一方面,可以说服务器具有大量访问权限,如果访问量小,等待这么多时间是不可能的。另外一方面,用户进入您的服务后,很长时间没有收到新的请求,也就是说,用户不再看你的网站。
【问题7】服务器timewait比较多,会造成一定的时间和资源浪费,如何高效的利用timewait的等待时间呢?
编辑内核文件/etc/sysctl.conf,添加以下内容:
net.ipv4.tcp_syncookies = 1 表示SYN Cookie 的打开。 当SYN 等待队列溢出时, cookies 被启用处理, 防止少量SYN攻击, 默认值为 0, 这意味着关闭;
net.ipv4.tcp_tw_reuse = 1 表示开放的重用。 允许重新使用新的TCP连接的 TIME-WAIT接口,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout 修改系默认的 TIMEOUT 时间
然后执行 / sbin/sysctl - p 给参数效果.
/etc/sysctl.Conf是一个允许运行Linux系统更改的接口,它包含一些高级选项,用于TCP/IP堆栈和虚拟存储系统,永久修改内核参数,并优化内核参数。
只需打开系统重新使用并快速恢复 TIMEWAIT。
服务器的 lastack 比较有什么问题?
LAST_ACK在被动切断者手中发生四次,表明有许多主机访问您,然后再次切断,可能故意攻击您的服务器,造成资源浪费。
问9SYN香港 Fan Pan攻击是什么?
SYN Flood利用TCP协议缺陷,发送大量伪造的TCP连接请求,第一个接口包(SYN packet)发送大量请求的连接,通常使用伪名IP或IP号码。攻击服务器响应第二个握手包(SYN+ACK包),因为另一方是假的IP,另一人将永远不会收到袋子,也不会对第三个手提包作出反应。导致攻击服务器维持大量SYN_RECV“半连接”状态,将重新尝试默认的5个对第二个手提包的响应,大量随机的恶意被发现填补了未完成的连接队列,从而导致正常合法 syn 不会排队,不允许正常业务请求连接.服务器端的资源分配在第二次握手时分配,当三个手完成时,客户资源都分配给对方,因此服务器易受SYN洪水的影响。
检测SYN攻击非常方便,当您看到服务器上大量半连接状态时,特别是,源IP地址是随机的,基本上,我们可以得出一个SYN攻击(SYN攻击可以通过Linux/Unix的全系统netstats命令检测)。
问题10如何解决SYN香港 Fan攻击?
缩短超时(SYN Timeout)时间
增加最大半连接数
过滤网关防护
SYN Cookie技术:
当服务器接受SYN消息段时,不直接分配资源给方案协调会,只要打开一个半开的插座。然后使用SYN声明部分的源ID,目的 Id,服务器本身只知道的端口号和秘密函数生成一个cookie,然后 cookie 作为序列数向客户端响应.
如果客户端正常建立连接, cookie + 1 的确认字段将返回.然后,服务器将验证消息的源ID,目的 Id,端口号和秘密函数计算结果,如果结果的值+1等于确认字段的值,然后证明客户刚刚请求连接,这是分配资源给TCP的时机
更多关于三次握手四次挥手的面试题目: 三次握手、四次挥手面试常考题
UDP流量和错误控制:
UDP没有流控机制
UDP只检查和提供错误控制,并要求高级协议提供错误控制:例如TFTP协议
[有些文章内容涉及其他博客,如有违反,请与我联络删除!]
本文由 在线网速测试 整理编辑,转载请注明出处。