当前位置: 首页 > news >正文

域名申请 网站建设网站制作专业

域名申请 网站建设,网站制作专业,网站服务器ip地址在哪里看,商务网站建设实训报告接着上一篇文章叙述#xff1a; TCP/IP连接(在互联网的通信中#xff0c;永远是客户端主动连接到服务端)#xff1a; 手机能够使用联网功能是因为手机底层实现了TCP/IP协议#xff0c;可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口#xff0c;使…接着上一篇文章叙述 TCP/IP连接(在互联网的通信中永远是客户端主动连接到服务端) 手机能够使用联网功能是因为手机底层实现了TCP/IP协议可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP连接需要经过“三次握手” 第一次握手 客户端发送syn包(synj)到服务器并进入SYN_SEND状态等待服务器确认SYN同步序列编号Synchronize Sequence Numbers 第二次握手 服务器收到syn包必须确认客户的SYNackj1同时自己也发送一个SYN包synk即SYNACK包此时服务器进入SYN_RECV状态 第三次握手 客户端收到服务器的SYNACK包向服务器发送确认包ACK(ackk1)此包发送完毕客户端和服务器进入ESTABLISHED状态完成三次握手。握手过程中传送的包里不包含数据三次握手完毕后客户端与服务器才正式开始传送数据。理想状态下TCP连接一旦建立在通信双方中的任何一方主动关闭连接之前TCP连接都将被一直保持下去。 序列号seq占4个字节用来标记数据段的顺序TCP把连接中发送的所有数据字节都编上一个序号第一个字节的编号由本地随机产生给字节编上序号后就给每一个报文段指派一个序号序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack占4个字节期待收到对方下一个报文段的第一个数据字节的序号序列号表示报文段携带数据的第一个字节的编号而确认号指的是期望接收到下一个字节的编号因此当前报文段最后一个字节的编号1即为确认号。确认ACK占1位仅当ACK1时确认号字段才有效。ACK0时确认号无效。同步SYN连接建立时用于同步序号。当SYN1ACK0时表示这是一个连接请求报文段。若同意连接则在响应报文段中使得SYN1ACK1。因此SYN1表示这是一个连接请求或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1握手完成后SYN标志位被置0。终止FIN用来释放一个连接。FIN1表示此报文段的发送方的数据已经发送完毕并要求释放运输连接。注意 ACK、SYN和FIN这些大写的单词表示标志位其值要么是1要么是0ack、seq小写的单词表示序号。字段含义 四次挥手 断开连接时服务器和客户端均可以主动发起断开TCP连接的请求断开过程需要经过“四次挥手” 1客户端进程发出连接释放报文并且停止发送数据。释放数据报文首部FIN1其序列号为sequ等于前面已经传送过来的数据的最后一个字节的序号加1此时客户端进入FIN-WAIT-1终止等待1状态。 TCP规定FIN报文段即使不携带数据也要消耗一个序号。2服务器收到连接释放报文发出确认报文ACK1acku1并且带上自己的序列号seqv此时服务端就进入了CLOSE-WAIT关闭等待状态。TCP服务器通知高层的应用进程客户端向服务器的方向就释放了这时候处于半关闭状态即客户端已经没有数据要发送了但是服务器若发送数据客户端依然要接受。这个状态还要持续一段时间也就是整个CLOSE-WAIT状态持续的时间。3客户端收到服务器的确认请求后此时客户端就进入FIN-WAIT-2终止等待2状态等待服务器发送连接释放报文在这之前还需要接受服务器发送的最后的数据。4服务器将最后的数据发送完毕后就向客户端发送连接释放报文FIN1acku1由于在半关闭状态服务器很可能又发送了一些数据假定此时的序列号为seqw此时服务器就进入了LAST-ACK最后确认状态等待客户端的确认。5客户端收到服务器的连接释放报文后必须发出确认ACK1ackw1而自己的序列号是sequ1此时客户端就进入了TIME-WAIT时间等待状态。注意此时TCP连接还没有释放必须经过2∗∗MSL最长报文段寿命的时间后当客户端撤销相应的TCB后才进入CLOSED状态。6服务器只要收到了客户端发出的确认立即进入CLOSED状态。同样撤销TCB后就结束了这次的TCP连接。可以看到服务器结束TCP连接的时间要比客户端早一些。 如果已经建立了连接但是客户端突然出现故障了怎么办 TCP还设有一个保活计时器显然客户端如果出现故障服务器不能一直等下去白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器时间通常是设置为2小时若两小时还没有收到客户端的任何数据服务器就会发送一个探测报文段以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应服务器就认为客户端出了故障接着就关闭连接。 为什么连接的时候是三次握手关闭的时候却是四次握手 因为当Server端收到Client端的SYN连接请求报文后可以直接发送SYNACK报文。其中ACK报文是用来应答的SYN报文是用来同步的。但是关闭连接时当Server端收到FIN报文时很可能并不会立即关闭SOCKET所以只能先回复一个ACK报文告诉Client端“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了我才能发送FIN报文因此不能一起发送。故需要四步握手。 SOCKET原理 套接字socket概念 套接字socket是通信的基石是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示包含进行网络通信必须的五种信息连接使用的协议本地主机的IP地址本地进程的协议端口远地主机的IP地址远地进程的协议端口。应用层通过传输层进行数据通信时TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接许多计算机操作系统为应用程序与TCPIP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口区分来自不同应用程序进程或网络连接的通信实现数据传输的并发服务。建立socket连接 建立Socket连接至少需要一对套接字其中一个运行于客户端称为ClientSocket 另一个运行于服务器端称为ServerSocket 。套接字之间的连接过程分为三个步骤服务器监听客户端请求连接确认。**服务器监听**服务器端套接字并不定位具体的客户端套接字而是处于等待连接的状态实时监控网络状态等待客户端的连接请求。客户端请求 指客户端的套接字提出连接请求要连接的目标是服务器端的套接字。为此客户端的套接字必须首先描述它要连接的服务器的套接字指出服务器端套接字的地址和端口号然后就向服务器端套接字提出连接请求。 连接确认 当服务器端套接字监听到或者说接收到客户端套接字的连接请求时就响应客户端套接字的请求建立一个新的线程把服务器端套接字的描述发给客户端一旦客户端确认了此描述双方就正式建立连接。而服务器端套接字继续处于监听状态继续接收其他客户端套接字的连接请求。socket编程实践 SOCKET连接与TCP/IP连接 创建Socket连接时可以指定使用的传输层协议就是之前代码里面使用的bind函数Socket可以支持不同的传输层协议TCP或UDP当使用TCP协议进行连接时该Socket连接就是一个TCP连接。socket则是对TCP/IP协议的封装和应用程序员层面上。也可以说TPC/IP协议是传输层协议主要解决数据如何在网络中传输而HTTP是应用层协议主要解决如何包装数据。关于TCP/IP和HTTP协议的关系网络有一段比较容易理解的介绍“我们在传输数据时可以只使用传输层TCP/IP协议但是那样的话如果没有应用层便无法识别数据内容如果想要使传输的数据有意义则必须使用到应用层协议应用层协议有很多比如HTTP、FTP、TELNET等也 可以自己定义应用层协议。WEB使用HTTP协议作应用层协议以封装HTTP文本信息然后使用TCP/IP做传输层协议将它发到网络上。”我们平时说的最多的socket是什么呢实际上socket是对TCP/IP协议的封装Socket本身并不是协议而是一个调用接口API通过Socket我们才能使用TCP/IP协议。实际上Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候就希望也能适应其他的网络协议。所以说Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已是对TCP/IP协议的抽象从而形成了我们知道的一些最基本的函数接口比如create、 listen、connect、accept、send、read和write等等。网络有一段关于socket和TCP/IP协议关系的说法比较容易理解“TCP/IP只是一个协议栈就像操作系统的运行机制一样必须要具体实现同时还要提供对外的操作接口。这个就像操作系统会提供标准的编程接口比如win32编程接口一样TCP/IP也要提供可供程序员做网络开发所用的接口这就是Socket编程接口。”实际上传输层的TCP是基于网络层的IP协议的而应用层的HTTP协议又是基于传输层的TCP协议的而Socket本身不算是协议就像上面所说它只是提供了一个针对TCP或者UDP编程的接口。socket是对端口通信开发的工具,它要更底层一些。 HTTP连接 HTTP协议即超文本传送协议(Hypertext Transfer Protocol )是Web联网的基础也是手机联网常用的协议之一HTTP协议是建立在TCP协议之上的一种应用。HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应在请求结束后会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。 1在HTTP 1.0中客户端的每次请求都要求建立一次单独的连接在处理完本次请求后就自动释放连接。2在HTTP 1.1中则可以在一次连接中处理多个请求并且多个请求可以重叠进行不需要等待一个请求结束后再发送下一个请求。 由于HTTP在每次请求结束后都会主动释放连接因此HTTP连接是一种“短连接”要保持客户端程序的在线状态需要不断地向服务器发起连接请求。通常的做法是即时不需要获得任何数据客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求服务器在收到该请求后对客户端进行回复表明知道客户端“在线”。若服务器长时间无法收到客户端的请求则认为客户端“下线”若客户端长时间无法收到服务器的回复则认为网络已经断开。 Socket连接与HTTP连接 由于通常情况下Socket连接就是TCP连接因此Socket连接一旦建立通信双方即可开始相互发送数据内容直到双方连接断开。但在实际网络应用中客户端到服务器之间的通信往往需要穿越多个中间节点例如路由器、网关、防火墙等大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连因此需要通过轮询告诉网络该连接处于活跃状态。而HTTP连接使用的是“请求—响应”的方式不仅在请求时需要先建立连接而且需要客户端向服务器发出请求后服务器端才能回复数据。很多情况下需要服务器端主动向客户端推送数据保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接服务器就可以直接将数据传送给客户端若双方建立的是HTTP连接则服务器需要等到客户端发送一次请求后才能将数据传回给客户端因此客户端定时向服务器端发送连接请求不仅可以保持在线同时也是在“询问”服务器是否有新的数据如果有就将数据传给客户端。http协议是应用层的协义有个比较形象的描述HTTP是轿车提供了封装或者显示数据的具体形式Socket是发动机提供了网络通信的能力。两个计算机之间的交流无非是两个端口之间的数据通信,具体的数据会以什么样的形式展现是以不同的应用层协议来定义的如HTTP、FTP… 参考博文sockettcphttp三者之间的区别和原理、TCP三次握手、四次挥手
http://www.zqtcl.cn/news/880094/

相关文章:

  • 做外贸什么网站比较好做dede鲜花网站模板下载
  • 网站广告推广怎么做网站怎么优化关键词排名
  • 怎样做易支付网站数字化校园建设网站
  • 东莞做网站哪里好公司网站维护怎么维护
  • 微信网站界面设计江阴网站开发公司电话
  • 手机制作网站的软件离石做网站的网络公司
  • 贺州住房和城乡建设部网站广州商城网站建设地址
  • 响应式网站报价服务器上的wordpress
  • 做培训的都上哪些网站东莞网站新站排名
  • 济南网站制郑州快速建站公司
  • 网站推广企业网站建设属于什么工作
  • 公司做网站还是做app用土豆做美食的视频网站
  • 做网站除了广告还有什么收入的中国计算机技术职业资格网
  • 陕西建设银行网站查排名的软件有哪些
  • 企业网站备案教程北京专业做网站的
  • 音乐网站如何建设的如何做学校网站
  • 济南比较好的网站开发公司个人注册网站怎么注册
  • 济南高端网站设计策划图书馆网站建设情况汇报
  • 知识付费网站建设做网站源码
  • php网站开发实训报告书怎么做兼职类网站吗
  • 建设银行u盾用网站打不开中企动力值不值得入职
  • 织梦做的网站有点慢商贸网站
  • 海外红酒网站建设wordpress 分类 文章
  • 七星彩网站建设wordpress w3
  • 广州网站建设全包百度怎么优化关键词排名
  • 中山网站制作服务公司做环评的网站
  • 江山市住房和城乡建设局网站iis部署网站 错误400
  • 网站域名如何备案建设厅公积金中心网站
  • 网站怎么建设?电子商务网站开发相关技术
  • 苏州网站设计公司济南兴田德润厉害吗python基础教程第3版