SERVICE PHONE

062-399888612
  • 诚信为本,市场在变,诚信永远不变...

行业资讯

当前位置: 首页 > 新闻动态 > 行业资讯

【bet356体育在线亚洲最新最】一文读懂客户端请求是如何到达服务器的(干货)

发布时间:2024-09-15 点击量:251
本文摘要:互联网是人类历史上最伟大的发现缔造之一,而组成互联网架构的焦点在于TCP/IP协议。

bet356体育在线官方网站

互联网是人类历史上最伟大的发现缔造之一,而组成互联网架构的焦点在于TCP/IP协议。那么TCP/IP是如何事情的呢,我们先从数据包开始讲起。1、数据包一、HTTP请求和响应步骤http请求全历程请求响应以上完整表现了HTTP请求和响应的7个步骤,下面从TCP/IP协议模型的角度来明白HTTP请求和响应如何通报的。2、TCP/IP概述我们以RFC 1180中的图作为参考上图展示了四层TCP/IP协议图,其中network applications是应用法式,属于应用层;TCP和UDP主要是传输数据,属于传输层,TCP确保端对端的可靠传输并只管确保网络康健运行,而UDP是简朴不行靠传输;IP主要解决路由问题,属于网络层;ARP是网络地址转换,主要用来转换IP地址和MAC地址,介于数据链路层和网络层之间,可以看成2.5层;ENET在这里是数据链路层,网卡驱动属于这一层,主要做详细的介质传输,前面示例中的广告请求抓包就是在数据链路层抓取。

值得注意的是,ARP在linux系统里属于网络层,而在RFC里是介于数据链路层和网络层之间。在《TCP/IP详解》一书里,ARP被放到了数据链路层。当解决实际问题的时候,我们应该把ARP放到网络层。

上图给出使用TCPCopy在差别层发包的使用方法。如果TCPCopy从数据链路层发包,由于没有享受到ARP服务,用户需要在使用TCPCopy的时候分外加上MAC地址;而如果TCPCopy从IP层发包,则无需指定MAC地址。

本课程主要讲述TCP相关案例,没有特殊说明的话,TCP特指传输层的TCP。3、什么是TCPTCP即传输控制协议,是一种面向毗连的、可靠的、基于字节省的通信协议。

bet356体育在线官方网站

TCP的主要事情是界说端口标识应用法式的身份,实现端对端的可靠通信,并举行拥塞控制,防止互联网崩塌。TCP有如下关键特性:由于TCP是面向毗连的协议,所以是一种有状态的协议,而有状态的协议往往比力庞大,因此TCP学习起来也比力难题。通过状态图来检察一下TCP状态的庞大性:上图展示了错综庞大的TCP状态图,然而现实越发庞大。

现实中的TCP状态图其实是这样的:图中,不仅SYN_RCVD状态能够收到reset数据包(图中RST,reset数据包是重置毗连的数据包,可以使TCP状态瞬间变为CLOSED状态,而CLOSED状态是无法追踪的),而且FIN_WAIT1、FIN_WAIT2、ESTABLISHED、SYN_SENT和CLOSE_WAIT都能被reset数据包打回到CLOSED状态。不仅如此,TCP状态还受到超时的影响。例如Linux系统,一旦毗连处于FIN_WAIT_2,在60秒内(默认)如果没有吸收到对端的FIN数据包,系统会把此毗连状态FIN_WAIT_2直接变到CLOSED状态。

虽然Linux这样做是为了防止攻击,但这种超时就干掉毗连状态的做法,很可能误杀了许多正常毗连,从而使问题越发捉摸不定。在互联网领域,许多诡异的问题跟TCP状态有关系,课程后续会有较多案例来讲述这些灵异问题。

4、端口当我们去毗连服务器法式时,需要指明服务器端口。为什么需要端口呢?因为系统是通过端口来区分差别应用法式,TCP通过端口找到上层应用。需要注意的是,端口号是有限的,端口号最大为65535,能够使用的端口数量随设置而定。

例如在压力测试历程中,一台机械可以使用的TCP端口是有限的,能够使用的毗连(客户端端口,客户端IP,服务器应用端口,服务器IP地址)是有限的。为相识决这个问题,可以设置多IP地址来扩大可用毗连数量。系统支持同一个端口,差别的IP地址来绑定差别的应用。

亚洲bet356体育在线官网

Linux高版本系统下,在绑定同一个IP地址的情况下,我们还可以使用REUSEPORT机制使差别应用法式共享同一个监听端口,这对高性能服务器开发是很是有用的。我们开发的数据库中间件cetus就使用这个机制来解决短链接风暴的问题。

5、IP网络层的主要事情是界说网络地址,区分网段,子网内MAC寻址,对差别子网的数据包举行路由。IP的主要作用就是在庞大的网络情况中将数据包发给最终的目的地址。IP是面向无毗连的,是无状态的协议。IP为什么被设计成无状态呢?1. 无状态协议处置惩罚简朴2. 通信之前无需建设毗连3. TCP已经面向毗连服务了,IP层可以委托TCP来解决面向毗连的问题4. 由于不带有状态,互联网路由起来越发自由,容错性也更强值得注意的是,现实中的IP层往往都带有宁静过滤,甚至有些路由器,防火墙等中途设备还会干预干与应用(例如通过reset数据包来干预干与TCP会话),为了更好的做宁静检测,IP层还增加了connection tracking,在无状态协议上面来追踪上层毗连。

这种方式提高了宁静性,但有时也会带来新的问题,我们后面有案例详细讲述connnection tracking带来的坑的故事。6、TCP Socket应用法式通过TCP socket接口来挪用TCP服务,从而到达通报数据的目的。

每一个TCP socket会被绑定到一个端口,TCP socket双向都可以通信,在发送数据的同时,还可以吸收数据。值得注意的是,应用法式发送完数据,只代表通过TCP socket委托给TCP的事情已经完成,不代表发送给对端完毕,应用发送数据和TCP传输数据不是同步的。7、How TCP/IP Works当用户通过TCP socket接口发送请求后,TCP协议模块接受了请求通报,TCP先把请求拆分成一个个更小的数据分段(假设TCP offload没有开启的情况下),通过IP层发送出去。在IP层,这些数据分段会被封装成IP数据包,通过数据链路层发送给互联网(见下图)。

这些数据包经由互联网的多个路由器到达目的地。由于IP网络是无状态的协议,每一个数据包走的路径可能纷歧样,而且到达的顺序也有可能纷歧样,这就要求对端的TCP需要重新组装数据包,以确保向应用层通报的数据是用户能够识此外用户请求,这样服务器应用法式就可以处置惩罚用户提倡的请求了。

亚洲bet356体育在线官网

下图中,假设用户请求拆分成两个IP数据包第一个IP数据包可能经由A,B,C,G,如下图。第二个数据包可能经由A,B,E,G(在B点选择了E节点,导致路径差别),如下图。导致数据包在B节点走向差别路径的原因可能有许多种,例如C节点暂时不如E节点通畅或者暂时发生了网络拥塞,这与在高速门路驾驶的原理差不多。

由于网络情况多变,还可能第二个数据包先到达服务器,这时TCP会卖力处置惩罚out of order的情况;如果网络通报历程中,某一个路由器由于过于忙碌,把第一个数据包丢了,那么客户端的TCP会卖力重传第一个数据包,确保服务器端的TCP能够不会因为丢包而收不到第一个数据包。如果用户请求内容很大,如上传一个大文件,就会被拆分成大量数据分段,而TCP传输这些数据分段的时候,往往还会思量整个互联网能够吸收的水平和对方能够吸收的水平,发送数据过于贪婪不仅会牵连整个互联网,对方也未必能够吸收得了,而且还可能使自己速度更慢,这有点像门路驾驶一样,不能过于自私,遵守一定的交通规则才气使门路通畅。在互联网传输数据方面,这些交通规则算法就是赫赫有名的网络拥塞控制算法,而对方能否吸收得了,则通过发送窗口的方式举行控制。

总体来说,一次发送数据的巨细是凭据对方的吸收窗口巨细和拥塞控制算法来综合决议的。从上面可以看出,IP卖力在互联网传输数据,而TCP卖力数据传输可靠而且只管使网络康健运行,两者互助完成了请求的通报,这也是互联网应用事情的普遍方式。需要注意的是,TCP卖力跟TCP举行交互,应用层无需去实现TCP的功效,只需要委托给TCP来完成数据传输,这种隔离的方式给应用层的开发/运维/测试带来了利便,另外,当泛起TCP相关问题时,解决问题的难度也大大增加。8、TCP履历知识在多年实战历程中,我们发现以下TCP履历对事情很有资助。

总结如下:1. 距离越远,延迟越大,重传概率越大2. 网络状况优劣,直接影响应用法式性能3. 差别情况,接纳差别的拥塞算法4. 拥塞控制算法是互联网的英华,是互联网大获乐成的关键因素之一5. TCP是有状态协议,接纳异步处置惩罚6. 抓包分析是找到TCP相关问题基础原因的利器7. TCP客户端和TCP服务器端之间的交互,是应用层所有应用公共的交互部门,明白了这部门原理,可以解决大量TCP相关问题。9、IP履历知识在IP履历知识方面,我们大致总结如下:1. 数据包选择路径不是牢固的,到达的顺序也可能是乱序的2. 宁静过滤,坑多的地方3. 无状态协议,简化互联网架构,是互联网大获乐成的关键因素之一4. IP层对TCP通报过来的数据包很少分片处置惩罚5. 中途设备不仅仅具备路由功效,而且还会干预干与TCP会话(灵异问题的温床)10、竣事语TCP/IP网络是互联网的基石,相识TCP/IP是如何事情的,对于我们解决问题是很是有资助的。


本文关键词:亚洲bet356体育在线官网,bet356体育在线官方网站,bet356体育在线亚洲最新最

本文来源:亚洲bet356体育在线官网-www.ckdsm.com