纠纷奇闻社交美文家庭
投稿投诉
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

面试常考题一个请求是如何从浏览器到服务器的?

4月8日 眸中星投稿
  作者:架构师之路
  toutiao。comi6726119122301616647
  互联网是人类历史上最伟大的发明创造之一,而构成互联网架构的核心在于TCPIP协议。那么TCPIP是如何工作的呢,我们先从数据包开始讲起。
  1、数据包
  一、HTTP请求和响应步骤
  http请求全过程
  请求
  响应
  以上完整表示了HTTP请求和响应的7个步骤,下面从TCPIP协议模型的角度来理解HTTP请求和响应如何传递的。
  2、TCPIP概述
  我们以RFC1180中的图作为参考
  上图展示了四层TCPIP协议图,其中networkapplications是应用程序,属于应用层;TCP和UDP主要是传输数据,属于传输层,TCP确保端对端的可靠传输并尽量确保网络健康运行,而UDP是简单不可靠传输;IP主要解决路由问题,属于网络层;ARP是网络地址转换,主要用来转换IP地址和MAC地址,介于数据链路层和网络层之间,可以看成2。5层;ENET在这里是数据链路层,网卡驱动属于这一层,主要做具体的介质传输,前面示例中的广告请求抓包就是在数据链路层抓取。
  值得注意的是,ARP在linux系统里属于网络层,而在RFC里是介于数据链路层和网络层之间。在《TCPIP详解》一书里,ARP被放到了数据链路层。当解决实际问题的时候,我们应该把ARP放到网络层。
  上图给出使用TCPCopy在不同层发包的使用方法。如果TCPCopy从数据链路层发包,由于没有享受到ARP服务,用户需要在使用TCPCopy的时候额外加上MAC地址;而如果TCPCopy从IP层发包,则无需指定MAC地址。
  本课程主要讲述TCP相关案例,没有特殊说明的话,TCP特指传输层的TCP。
  3、什么是TCP
  TCP即传输控制协议,是一种面向连接的、可靠的、基于字节流的通信协议。TCP的主要工作是定义端口标识应用程序的身份,实现端对端的可靠通信,并进行拥塞控制,防止互联网崩塌。
  TCP有如下关键特性:
  由于TCP是面向连接的协议,所以是一种有状态的协议,而有状态的协议往往比较复杂,因此TCP学习起来也比较困难。
  通过状态图来查看一下TCP状态的复杂性:
  上图展示了错综复杂的TCP状态图,然而现实更加复杂。
  现实中的TCP状态图其实是这样的:
  图中,不仅SYNRCVD状态能够收到reset数据包(图中RST,reset数据包是重置连接的数据包,可以使TCP状态瞬间变为CLOSED状态,而CLOSED状态是无法追踪的),而且FINWAIT1、FINWAIT2、ESTABLISHED、SYNSENT和CLOSEWAIT都能被reset数据包打回到CLOSED状态。不仅如此,TCP状态还受到超时的影响。例如Linux系统,一旦连接处于FINWAIT2,在60秒内(默认)如果没有接收到对端的FIN数据包,系统会把此连接状态FINWAIT2直接变到CLOSED状态。虽然Linux这样做是为了防止攻击,但这种超时就干掉连接状态的做法,很可能误杀了很多正常连接,从而使问题更加捉摸不定。
  在互联网领域,很多诡异的问题跟TCP状态有关系,课程后续会有较多案例来讲述这些灵异问题。
  4、端口
  当我们去连接服务器程序时,需要指明服务器端口。为什么需要端口呢?因为系统是通过端口来区分不同应用程序,TCP通过端口找到上层应用。
  需要注意的是,端口号是有限的,端口号最大为65535,能够利用的端口数量随配置而定。例如在压力测试过程中,一台机器可以利用的TCP端口是有限的,能够利用的连接(客户端端口,客户端IP,服务器应用端口,服务器IP地址)是有限的。为了解决这个问题,可以配置多IP地址来扩大可用连接数量。系统支持同一个端口,不同的IP地址来绑定不同的应用。Linux高版本系统下,在绑定同一个IP地址的情况下,我们还可以利用REUSEPORT机制使不同应用程序共享同一个监听端口,这对高性能服务器开发是非常有用的。我们开发的数据库中间件cetus就利用这个机制来解决短链接风暴的问题。
  5、IP
  网络层的主要工作是定义网络地址,区分网段,子网内MAC寻址,对不同子网的数据包进行路由。IP的主要作用就是在复杂的网络环境中将数据包发给最终的目标地址。
  IP是面向无连接的,是无状态的协议。IP为什么被设计成无状态呢?
  1。无状态协议处理简单
  2。通信之前无需建立连接
  3。TCP已经面向连接服务了,IP层可以委托TCP来解决面向连接的问题
  4。由于不带有状态,互联网路由起来更加自由,容错性也更强
  值得注意的是,现实中的IP层往往都带有安全过滤,甚至有些路由器,防火墙等中途设备还会干涉应用(例如通过reset数据包来干涉TCP会话),为了更好的做安全检测,IP层还增加了connectiontracking,在无状态协议上面来追踪上层连接。这种方式提高了安全性,但有时也会带来新的问题,我们后面有案例具体讲述connnectiontracking带来的坑的故事。
  6、TCPSocket
  应用程序通过TCPsocket接口来调用TCP服务,从而达到传递数据的目的。每一个TCPsocket会被绑定到一个端口,TCPsocket双向都可以通信,在发送数据的同时,还可以接收数据。
  值得注意的是,应用程序发送完数据,只代表通过TCPsocket委托给TCP的工作已经完成,不代表发送给对端完毕,应用发送数据和TCP传输数据不是同步的。
  7、HowTCPIPWorks
  当用户通过TCPsocket接口发送请求后,TCP协议模块接管了请求传递,TCP先把请求拆分成一个个更小的数据分段(假设TCPoffload没有开启的情况下),通过IP层发送出去。在IP层,这些数据分段会被封装成IP数据包,通过数据链路层发送给互联网(见下图)。这些数据包经过互联网的多个路由器到达目的地。由于IP网络是无状态的协议,每一个数据包走的路径可能不一样,而且到达的顺序也有可能不一样,这就要求对端的TCP需要重新组装数据包,以确保向应用层传递的数据是用户能够识别的用户请求,这样服务器应用程序就可以处理用户发起的请求了。
  下图中,假设用户请求拆分成两个IP数据包
  第一个IP数据包可能经过A,B,C,G,如下图。
  第二个数据包可能经过A,B,E,G(在B点选择了E节点,导致路径不同),如下图。
  导致数据包在B节点走向不同路径的原因可能有很多种,例如C节点暂时不如E节点通畅或者临时发生了网络拥塞,这与在高速道路驾驶的原理差不多。
  由于网络环境多变,还可能第二个数据包先到达服务器,这时TCP会负责处理outoforder的情况;如果网络传递过程中,某一个路由器由于过于繁忙,把第一个数据包丢了,那么客户端的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、结束语
  TCPIP网络是互联网的基石,了解TCPIP是如何工作的,对于我们解决问题是非常有帮助的。
投诉 评论 转载

真的是免费送!Epic限时领取正当防卫4感谢IT之家网友OrekiDawson的线索投递!IT之家4月17日消息据IT之家网友投稿,昨天晚间,Epic商店已开启新一周的游戏免费领取,开启的免费领取游戏是《正当防……GTA5等三款游戏热卖,游戏发行商TakeTwo业绩超预期北京时间8月6日早间消息,据美国财经媒体CNBC报道,游戏发行商TakeTwo本周一提高了全年收入预测,原因是旗下三款游戏产品,即NBA2K、《GTA5》(GrandTheft……298元起,育碧刺客信条英灵殿PC版预购开启IT之家5月4日消息育碧官方近期宣布,刺客信条:英灵殿预购现已开启!立即成为维京战士!游戏分为普通版(售价298元)、黄金版(售价498元)和终极版(售价548元),预购任一版……开源了一个webpack插件,希望对大家有所帮助最近,陆陆续续搞了一个UniUsingComponentsWebpackPlugin插件(下面介绍),这是自己第三个开源项目,希望大家一起来维护,一起star呀,其它两个:vu……GTAGTA2惊现欧洲评级网站,还是索尼PS3版IT之家5月4日消息欧洲评级委员会PEGI已正式对原始版《GTA》及其续集《GTA2》进行了重新评级,并且是针对索尼PS3版游戏而言。令人奇怪的是,这两个游戏已经有20多年历史……贴告示逝者禁止乘电梯的元凶找到了,原来是这个人近日,江苏无锡一位95岁的老太太过世之后,邻居在其生前所住楼层的电梯口,匿名张贴告示本幢楼人员过世,只能走楼梯,绝不容许乘坐电梯,引起了网友们的关注。逝者禁止乘电梯,这种事情还……独占很无奈地铁逃离Steam盒装版贴Epic贴纸完事IT之家2月16日消息Epic宣布独占首发《地铁:离去》、和Steam对着干的做法在业界引起了不小的风波,甚至有些让人措手不及。据PCGamersN报道,这一做法不得不让一些厂……通过手机修复老照片,用什么软件好?泼辣,snapseed,LR,mix都可以!这些都是我常用的美图秀秀!修复偏黄照片!具体步骤:黑白色35去雾35粉嫩50冰灵20磨皮24,去额头黑点轻度磨皮皮肤美白,选择……光遗传学会不会获诺奖?诺奖风向标拉斯克奖揭晓,光遗传学领域的三位科学家获2021年的拉斯克奖基础医学研究奖图源:laskerfoundation。org导读北京时间9月25日零点,202……36氪首发智能设备基础部件供应商果栗科技完成7000万A轮融近日,36氪获悉,上海果栗自动化科技有限公司(以下简称果栗科技)完成7000万A轮融资,基石资本领投,老股东中科创星,敏一基金,盛宇跟投。据悉,本轮融资资金将主要用于扩大再生产……英雄联盟设计师透露版本变更方向改动战士装备,更新风女阿狸等IT之家12月18日消息,拳头设计师Axes发布了最新的开发者日志,透露了未来版本改动的方向,明年将改动战士装备,更新风女、阿狸等。具体内容:12。1传送改动:前1……面试常考题一个请求是如何从浏览器到服务器的?作者:架构师之路toutiao。comi6726119122301616647互联网是人类历史上最伟大的发明创造之一,而构成互联网架构的核心在于TCPIP协议。那么……
太原国美电器(太原国美电器电话地址)母子俩吃饭,我从不叫外卖,四菜一汤吃得香,方便简单营养好自己手机掉了怎么用其他手机查定位(查手机定位追踪怎么查免费)蛟河市新站镇践行新发展理念加快推进秸秆综合利用科普下橘和桔两个字有什么区别连续十余年拿下双料冠军,蓝月亮有何常青之道价值1。3亿,出自他手,不愧是名画,你见过吗?看电视的好处(看电视的好处和坏处)抛物线的参数方程(抛物线的四种参数方程)杭州周边游好去处,不仅能看到钱塘江潮水,还有370亩樱花林怎样制作热气球(手工热气球怎么做可以飞)生理盐水怎么配(在家怎么自制生理盐水)
谜尚隔离霜适合什么肤质四款谜尚霜的作用功效今年冬季流行的发型凸显奢华美又潮流范十足发型唐嫣的老公罗晋你们认识吗?深圳公务员养老改革应付民意无实质意义两位造句用两位造句大全夜晚如何预防小偷简述日本为什么打不过明朝民法典溯及既往的效力是怎么规定的?瓷砖产品购销合同精华我的奶奶五年级作文400字合集九篇藏不住啦!潍坊深处的胡林古,堪称人间理想!一句话让嘴贱的人闭嘴

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形