范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

TCP连接详解

  TCP 连接建立的三次握手
  1、先提出一个问题,可以不进行三次握手直接往服务端发送数据包吗?
  是不可以的,也是可以的 ;
  1)不可以是因为现在的TCP连接标准和规范要求传输数据前先确认两端的状态,有一端状态不OK的话,发数据包有什么用呢;
  2)说可以是站在网络连接的角度,像 UDP 协议; TCP,Transmission Control Protocol,传输控制协议,面向连接; UDP,User Data Protocol,用户数据报协议,面向数据包;
  2、TCP三次握手
  1)标志位、随机序列号和确认序列号是在数据包的 TCP 首部里面;
  2)几个状态是指客户端和服务端连接过程中 socket 状态;
  3)第一次握手,客户端向服务端发送数据包,该数据包中 SYN 标志位为 1,还有随机生成的序列号c_seq,客户端状态改为  SYN-SENT ;
  4)第二次握手,服务端接收到客户端发过来的数据包中 SYN 标志位为 1,就知道客户端想和自己建立连接,服务端会根据自身的情况决定是拒绝连接,或确定连接,还是丢弃该数据包;
  拒绝连接,会往客户端发一个数据包,该数据包中 RST 标志位为 1,客户端会报  Connection refused ;
  丢弃客户端的数据包,超过一定时间后客户端会报  Connection  timeout;
  确定连接时会往客户端发一个数据包,该数据包中 ACK 标志位为 1,确认序列号 ack=c_seq+1,SYN 标志位为 1,随机序列号 s_seq,状态由  LISTEN  改为  SYN-RCVD ;
  5)第三次握手,客户端接收到数据包会做校验,校验ACK标志位和确认序列号 ack=c_seq+1,如果确定是服务端的确认数据包,改自己的状态为  ESTABLISHED ,并给服务端发确认数据包;
  6)服务端接到客户端数据包,会校验ACK标志位和确认序列号 ack=s_seq+1,改自己的状态为  ESTABLISHED ,之后就可以进行数据传输了;
  7)建立连接时的数据包是没有实际内容的,没有应用层的数据;
  8)建立连接之后发起的请求数据包,每个数据包都会封装各层协议的头部信息,标志位ACK为1,其他标志位变动;
  9)网络进程间的通信,一台服务器内部的进程间通信不用这样;
  3、TCP 连接三次握手抓包
  三次握手底层逻辑
  1、Socket
  1)Socket 在 linux 系统中是一种特殊的文件,因为 linux 系统的理念就是【一切皆文件】,是系统内核级的功能;
  2)以上定义比较具体,可以抽象来理解,是一个内核级的用于通信的功能层,包含一组接口函数,这些函数实际就是操作 socket 文件句柄文件描述符;
  一个 TCP 连接由四要素【源IP、源Port、目标IP、目标Port】唯一标识,也即 socket 由这四要素唯一确定;
  一个 TCP 连接的建立也就是客户端、服务端创建了相对应的一对 socket,客户端和服务端之间的通信也就是这对 socket 间的通信(物理层面是网卡在发送/接收比特流数据);
  3) 一个服务与另一个服务建立连接,他们的端口是什么呢 ?
  客户端发出请求端口号是随机的,服务端是进程监听的端口号;
  2、socket 主要函数介绍
  1、进程通信,一个进程只有一个监听 socket,connect socket 是针对一个客户的一个连接的,有很多个; 2、connect 函数内部在发起请求前会找系统随机一个端口号; 3、连接建立后,客户端发起请求传输数据,服务端会直接交给 connect socket 处理,不会交给监听 socket 处理;
  4、监听 socket 在处理客户端请求时,如果此时其他客户端发请求过来,监听 socket 是没法处理的,此时系统会维护请求队列由 backlog 参数指定;
  全连接队列(completed connection queue)
  半连接队列(incomplete connection queue)
  Linux 内核 2.2 版本之前 ,backlog 的大小等于全连接队列和半连接队列之和;
  Linux 内核 2.2 版本之后 ,backlog 的大小之和全连接队列有关系:
  半连接队列大小由 /proc/sys/net/ipv4/tcp_max_syn_backlog 文件指定,可以开很大;
  全连接队列大小由 /proc/sys/net/core/somaxconn 文件和 backlog 参数指定,取两个中的最小值;
  tomcat acceptCount 就是配置全连接队列大小;
  3、socket 函数在建立连接和数据传输的大概使用情况
  4、TCP首部结构
  1)2的16次方等于 65536,所以系统中端口号的限制个数为 65536,一般1024以下端口被系统占用;
  2)标志位这里是 6 个,还有其他标志位的,只是这 6 个标志位常用;
  3)seq 序列号,ack 确认序列号,序列号在数据传输时分包用到。三次握手时 seq 序列号是随机的,没有实际意义;
  4)TCP 包首部后面接着的是 IP 包首部,再紧接着的是以太网包首部,其实都是加 0101010101 二进制位;
  几个常用标志位,首先一个标志位占一个 bit 位,只能是二进制中的 1 或 0;
  1)SYN ,简写 S ,请求标志位,用来建立连接。在TCP三次握手中收到带有该标志位的数据包,表示对方想与己方建立连接;
  2)ACK ,简写【.】 ,请求确认/应答标志位,用于对对方的请求进行应答,对方收到含该标志位的数据包,会知道己方存在且可用。也会用在连接建立之后,己方发送响应数据给对方的数据包中;
  3)FIN ,简写 F ,请求断开标志位,用于断开连接。对方收到己方的含该标志位的数据包,就知道己方想与它断开连接,不再保持连接;
  4)RST ,简写 R ,请求复位标志位,因网络或己方服务原因导致有数据包丢失,己方接收到的数据包序列号与上一个数据包的序列号不衔接,那己方会发送含该标志位的数据包告诉对方,对方接收到含该标志位的数据包就知道己方要求它重新三次握手建立连接并重新发送丢失的数据包,一般断点续传会用到该标志位;
  还有就是如果对方发过来的数据错了,有问题,己方也会发送含该标志位的数据包;
  5)PSH ,简写 P ,推送标志位,表示收到数据包后要立即交给应用程序去处理,不应该放在缓存中,read()/write() 都有缓存区;
  6)URG ,简写 U ,紧急标志位,该标志位表示 tcp 包首部中的紧急指针域有效,督促中间层尽快处理;
  7)ECE,在保留位中;
  8)CWR,在保留位中;
  5、TCP 抓包
  TCP 连接断开的四次挥手
  1)服务端会根据自身情况,没有要处理的数据时会把第二次和第三次挥手合并成一次挥手,此时标志位 FIN=1 / ACK=1;
  2)MSL 是 Maximum Segment Lifetime 缩写,指数据包在网络中最大生存时间,RFC 建议是 2分钟;
  详细描述:
  1)客户端、服务端都可以主动发起断开连接;
  2)第一次挥手,客户端向服务端发送含 FIN=1 标志位的数据包,随机序列号 seq=m,此时客户端状态由  ESTABLISHED  变为  FIN_WAIT_1 ;
  3)第二次挥手,服务端收到含 FIN=1 标志位的数据包,就知道客户端要断开连接,服务端会向客户端发送含 ACK=1 标志位的应答数据包,确认序列号 ack=m+1,此时服务端状态由  ESTABLISHED  变为  CLOSE_WAIT ;
  4)客户端收到含 ACK=1 标志位的应答数据包,知道服务端的可以断开的意思,此时客户端状态由  FIN_WAIT_1  变为  FIN_WAIT_2 ;(第一、二次挥手也只是双方交换一下意见而已)
  5)第三次挥手,服务端处理完剩下的数据后再次向客户端发送含 FIN=1 标志位的数据包,随机序列号 seq=n,告诉客户端现在可以真正的断开连接了,此时服务端状态由  CLOSE_WAIT  变为  LAST_ACK ;
  6)第四次挥手,客户端收到服务端再次发送的含 FIN=1 标志位的数据包,就知道服务端处理好了可以断开连接了,但是客户端为了慎重起见,不会立马关闭连接,而是改状态,且向服务端发送含 ACK=1 标志位的应答数据包,确认序列号 ack=n+1,此时客户端状态由  FIN_WAIT_2  变为  TIME_WAIT ;
  等待  2 个MSL 时间还是未收到服务端发过来的数据,则表明服务端已经关闭连接了,客户端也会关闭连接释放资源,此时客户端状态由  TIME_WAIT  变为  CLOSED ;
  也就是说 TIME_WAIT 状态存在时长在 1~4分钟;
  7)服务端收到含 ACK=1 标志位的应答数据包,知道客户端确认可以断开了,就立即关闭连接释放资源,此时服务端状态由  LAST_ACK  变为  CLOSED ;
  SYN 洪水攻击(SYN Flood)
  是一种 DoS攻击(拒绝服务攻击),大概原理是伪造大量的TCP请求,服务端收到大量的第一次握手的数据包,且都会发第二次握手数据包去回应,但是因为 IP 是伪造的,一直都不会有第三次握手数据包,导致服务端存在大量的半连接,即 SYN_RCVD 状态的连接,导致半连接队列被塞满,且服务端默认会发 5 个第二次握手数据包,耗费大量 CPU 和内存资源,使得正常的连接请求进不来;

小米手机CIVI是值得买的手机吗?个人建议,不太值得购买。小米civi6。55英寸120赫兹高刷新率曲屏处理器搭载高通骁龙778G,最高主频才是2。4GHz,运行内存规格为LPDDR4X存储规格为ufs2。2,如果预判2022上半年哪些板块机会比较大?2022我个人看好的板块分享一后疫情时代板块,航空旅游大资金玩航空!小资金玩旅游,市值小。二新能源汽车,电动汽车。这条线,还是不错的,从2021预披露业绩来看,完全能够支撑股价继续为什么现在很多公司都不承认英国一年制硕士了?假如这个公司是比较正规的有相当规模的,它的HR是训练有素的,那么就不会发生这个问题!因为人事经理是识货的,他对英国各类学校出来的一年制硕士是不一样的这一常识,有一个起码的认知水平!快递春节不打烊是个伪命题?网友气笑了节前发货,但揽收到初七4天了,物流都没有更新。6天了,还在转运中心没发出来。快递确实发货了,但一直要揽收到初七?春节前夕,中通快递(02057。HKZTO。US)申通快递(002468。SZ)韵达股份(老年痴呆症的原因科学家和巫师分别是科学和迷信的代名词,科学家是科技发展的动力源泉,巫师是迷信思想的罪恶代表,我们要为我们伟大的科学家们点个赞,是他们给世界带来了光明,相反我们要揭发那些用心不良的巫鲎活了4亿年,蓝色血液比黄金还贵!被人绑着抽血还吃到濒危?鲎(读音和后相同),是地球上最古老的生物之一。曾经的它们因为拥有独特的蓝色血液,成为了人类的献血冠军。为什么它们的血液会是蓝色的,还能够救人无数?鲎真的是美味吗,为什么会被吃到濒临10。7亿色到底是什么?为何手机厂家近年都在宣传10亿色彩屏幕?10。7亿色到底是什么?为何手机厂家近年都在宣传10亿色彩屏幕?今天带你了解一下10bit和10亿色屏幕有啥关联!2020年各大手机厂家开始宣传10bit,介绍屏幕分辨率亮度nit淘宝闯入微信!超主播斩首!破天荒事件不断文丨王翠编辑丨石航千亿邦动力讯微信里能打开淘宝链接,直接购买商品了双11压货了,商家也纷纷躺平了超级头部主播一夜之间退下神坛互联互通让构筑了10年的平台围墙被拆掉元宇宙破门而入一切快手的苦日子要结束了?作为2021年港交所规模最大的IPO项目,快手在上市后股价就一直暴跌不止。但分析师认为,快手的复苏可能即将到来。股票分析师们认为,作为抖音强有力的竞争对手,快手的庞大用户基础和未来AssangeDAO筹集了3800万美元捐款帮助维基解密创始人获得自由为支持维基解密创始人JulianAssange出狱而成立的去中心化自治组织(DAO)筹集了12,569ETH,按当前价格计算约为3,880万美元。Assange目前正在争取被引渡到支付宝转账多久到账?对方通过支付宝给我们转账,需要多久才能到账呢,为什么对方说转了,我们却没有收到,支付宝转账分以下三种情况。一即时到账即时也就是瞬间就能到账,这种情况仅限于支付宝转支付宝,也就是说是
PRS吉他活动来听听李延亮现场都说了什么?8月7日,由雅登音响乐器(上海)有限公司主办,PRS吉他携手代言人李延亮在北京举办了全球定制款吉他发布会媒体见面会,现场展示了属于李延亮的定制款电吉他PRSCustom24Piez你收到了一封PRS吉他x李延亮媒体见面会的邀请函由PRS吉他中国大陆地区独家总代理雅登音响乐器(上海)有限公司主办的PRS吉他x李延亮全球定制款吉他发布会媒体见面会,即将于8月7日下午在北京壹号爵士咖啡举办。当天,李延亮将现身北马丁吉他2019艺术大赏完美落幕感谢9场有你们陪伴由雅登音响乐器(上海)有限公司主办,一场集艺术吉他音乐与对话,面向全吉他行业从业者和马丁吉他爱好者的马丁吉他2019艺术大赏,继今年5月在长沙成都昆明和厦门等城市成功举办后,于20杰卢卡路易西德国SAUTER首德钢琴200周年系列音乐会大师杰卢卡路易西从意大利佩萨若音乐学院毕业,曾在伊莫拉的Incontricol大师国际学院学习,在那不勒斯和巴黎跟随钢琴大师阿尔多奇科里尼学习。他曾在多个比赛中获奖,包括TIM贝利尼国2019德国SAUTER(首德)钢琴经销商晚宴圆满举办2019年10月12日晚,2019德国SAUTER(首德)钢琴经销商晚宴在上海国际会议中心小南国宴会厅盛大举办,来自全国各地的SAUTER钢琴经销商欢聚一堂。值此品牌200周年庆典卡尔约翰卓越1819璀璨1819立式钢琴闪耀登场为纪念德国SAUTER(首德)钢琴成立200周年庆典(18192019),德国SAUTER(首德)旗下家族品牌CarlJohann(卡尔约翰)全新推出两款立式钢琴卓越1819及璀璨男朋友女朋友看过来七夕送礼,你来挑,ta来买七夕节就快要到了男朋友和女朋友会送什么的礼物给对方呢?我们为大家准备了不同型号礼物请激情转发给他买起来Martin马丁吉他篇3款墨西哥产纪念款吉他GPCX1AE20thANNIVE原来PRSCustom22系列电吉他可以这么弹SECustom22VintageSunburstSECustom22WhaleBluePRSCustom22演奏远大前程PRSSECustom22为传统的Custom型号加入更多巴拉兹佐科莱依德国SAUTER首德钢琴200周年庆典系列音乐会大师匈牙利著名钢琴家巴拉兹佐科莱依(BalzsSzokolay)李斯特音乐学院钢琴系教授柴可夫斯基国际音乐比赛评委肖邦国际钢琴大赛评委巴拉兹佐科莱依1961年生于布达佩斯一个传奇音乐世PRS吉他x李延亮全球定制款吉他发布会ampampamp媒体见面会在京成功举办2019年8月7日,PRS吉他携手代言人李延亮在北京举办了一场全球定制款吉他发布会媒体见面会,现场展示了属于李延亮的定制款电吉他PRSCustom24Piezo,李延亮讲述了定制款德国SAUTER(首德)钢琴RHAPSODY2019新品鉴赏德国SAUTER(首德)DesignedbyPeterMalyRhapsody2019立式钢琴是为纪念SAUTER钢琴制造公司建立200周年所设计和推出的全新款式。她由世界顶尖家居