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

最简单网站开发软件网站的开发流程分哪几步

最简单网站开发软件,网站的开发流程分哪几步,多地进一步优化防控措施,宾利棋牌在哪个网站做的广告#x1f389;博主首页#xff1a; 有趣的中国人 #x1f389;专栏首页#xff1a; Linux网络 #x1f389;其它专栏#xff1a; C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好#xff0c;本片文章将会讲解 TCP协议的三次握手和四次挥手 的相关内容。 如果看到最后您觉得… 博主首页 有趣的中国人 专栏首页 Linux网络 其它专栏 C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好本片文章将会讲解 TCP协议的三次握手和四次挥手 的相关内容。 如果看到最后您觉得这篇文章写得不错有所收获麻烦点赞、收藏、留下评论。您的支持是我最大的动力让我们一起努力共同成长 文章目录 1. 三次握手font color blueb1.1 从代码看三次握手font color blueb1.2 三次握手的中间过程font color blueb1.3 三次握手的中间状态font color blueb1.4 三次握手一定要三次吗 2. 四次挥手font color blueb2.1 从代码看四次挥手font color blueb2.2 四次挥手的中间过程font color blueb2.3 四次挥手的中间状态font color blueb2.4 四次挥手的原因 上一篇文章中博主介绍了 : TCP 的确认应答机制TCP 的捎带应答机制TCP 的超时重传机制TCP 的报头 建议将上一篇文章看完之后再来看这篇文章链接如下 【Linux网络】详解TCP协议1 那么接下来正片开始 1. 三次握手 1.1 从代码看三次握手 我们之前在客户端写的代码有以下几步 创建一个套接字进行connect()建立链接以下是它的接口介绍 int connect (int sockfd, const struct sockaddr *addr,socklen_t addrlen); 详细代码 int sockfd socket(AF_INET, SOCK_STREAM, 0); connect(sockfd, serveraddr, serveraddr_len);在服务器中写的代码有以下几步 分配一个监听套接字绑定监听套接字的源地址和目标地址bind()以下是它的接口介绍 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 使监听描述符成为一个监听描述符listen()以下是它的接口介绍 int listen(int sockfd, int backlog); 进行 accept() 阻塞等待客户端链接以下是它的接口介绍 int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags); 详细代码 int listenfd socket(AF_INET, SOCK_STREAM, 0); bind(listenfd, localaddr, localaddr_len);listen(listenfd, backlog); int connfd accept(listenfd, cilentaddr, clientaddr_len, 0);详细解释 connect() 和 listen() 其实在 connect() 的时候就是 客户端向服务器发送三次握手的开始时间点服务器会首先处于 listen() 状态监听状态准备接受客户端的连接请求在 listen() 的底层其实会维护两个队列一个是已完成连接的队列 另一个是还在建立连接的队列。 当客户端与服务器的三次握手完成后连接将被移入已完成连接的队列这个队列的大小实际上就是由 l i s t e n ( ) listen() listen() 的第二个参数 b a c k l o g backlog backlog 决定的如果队列满了服务器就会直接拒绝请求。未完成连接队列存放的是那些尚未完成三次握手的连接请求。这些连接请求在被处理之前会暂时存放在这个队列中。 所以 accept() 是在干什么呢其实就是从已经完成连接建立的队列中取出一个连接然后再分配一个文件描述符。 1.2 三次握手的中间过程 三次握手过程图解 在 TCP 报头中有一个标志位是 SYN这个标志位在三次握手中起着关键的作用。 客户端给服务器发送包含 SYN 标志位的报文服务器接收客户端发送的报文同意建立连接并发送携带 ACK 和 SYN 的报文捎带应答客户端接受到报文之后会给服务器在发送一个 ACK客户端一旦发送了这个报文就表示建立连接成功了。 我们知道当接收方接收到发送方的信息的时候会给发送方发送 ACK 数据包这样发送方就可以确定接收方收到了消息那么在三次握手中最后一次客户端发送的ACK客户端本身是不能确定服务器一定收到了消息所以其实客户端其实是在赌服务器收到了消息。 详细解释最后一次 ACK 丢包 刚才说了客户端最后一次的 ACK 服务器可能并没有收到但是在客户端发送最后一次 ACK 之后客户端立即把自己的状态变成了 ESTABLISHED那么就说明客户端此时就可以立即给服务器发送携带正文的数据但是如果服务器接收到了消息但是很明显服务器的连接状态并没有变成 ESTABLISHED所以此时服务器就会给客户端发送一个携带 RST 标志位的报文 RST 标志位 当服务器给客户端发送这个报文的时候服务器就会提醒客户端重新建立连接因此这样就可以完美解决最后一次 ACK 服务器可能没收到的情况。 1.3 三次握手的中间状态 客户端的状态变化 [CLOSED - SYN_SENT] 客户端调用 connect 发送同步报文段[SYN_SENT - ESTABLISHED] 成功调用 connect 则进入 ESTABLISHED 状态 开始读写数据成功接受服务器端的 ACK SYN 服务器的状态变化 [CLOSED - LISTEN] 服务器端调用 listen 后进入 LISTEN 状态 等待客户端连接[LISTEN - SYN_RCVD] 一旦监听到连接请求(同步报文段) 就将该连接放入内核等待队列中 并向客户端发送 SYN 确认报文[SYN_RCVD - ESTABLISHED] 服务端一旦收到客户端的确认报文, 就进入ESTABLISHED 状态, 可以进行读写数据了。 1.4 三次握手一定要三次吗 三次握手可以是一次吗 如果三次握手变成一次就是说只要客户端给服务器发送一次 SYN 请求服务器就会立马在内核中维护这个连接说明连接建立成功这个时候如果是某些不法分子利用这个特点在一台甚至多台主机上向某个服务器发送多个SYN请求就会造成服务器崩溃这个被称为 SYN 洪水SYN 洪水具体的内容博主也不是很清楚只知道这个在网络安全中被称之为 DoS 攻击如果各位有兴趣可以去了解一下。 三次握手可以是两次吗 如果是两次其实也不行因为如果客户端对服务器发送的 ACK SYN 不做处理只是单纯的让服务器在他的操作系统内部维护连接队列就依然会引发 SYN 洪水 问题。所以两次也是不行的但是其实三次也会有类似的问题但是这个时候服务器和客户端消耗的资源是类似的所以少数的主机就很难将服务器挂掉。 为什么一定是三次呢 首先因为三次握手可以验证网络的连通性同时验证TCP是全双工的 因为如果是两次握手只能说明客户端可以发送数据服务器可以发送、接受数据 由于双方的地位是相同的三次握手也可以说明他们彼此之间都想和对方通信即达成通信共识意愿。其实三次握手本质上就是四次握手只是在第二次握手的时候服务器将 ACK 和 SYN 合并成了一条数据包发送而已。 2. 四次挥手 2.1 从代码看四次挥手 在双方通信完毕之后就会关闭掉对应的文件描述符调用 close() 接口下面是它的详细接口 int close(int fd); 其实在 close() 的时候就会发生两次次挥手表示要和对方断开连接。双方都调用 close() 就是四次挥手了。 2.2 四次挥手的中间过程 四次挥手过程图解 在 TCP 报头中有一个标志位是 FIN这个标志位在四次挥手中起着关键的作用。 当服务器或者客户端中的一方已经把要发送给对方的数据发送完了那么这时就会给对方发送一个带有FIN标志位的数据报 这里断开连接的一方没有特定的规定必须是客户端或者服务器只要给对方发送的数据发送完了就行。 当对方接受到报文之后就会给对方发送ACK如果过了一段时间我要发送的数据也给对方发完了那么我也要给对方发送带有FIN标志位的报文并且另一端也要给我发送ACK表示收到了我要断开连接的请求。 两次挥手可能不会同时发生 刚才说了如果一方已经把消息发送完了就会给对方发送带有FIN标志位的数据报但是这个时候另一方可能还要给我发送数据所以说这个时候另一方还不想和我断开连接那么这个时候另一方还是可以和我发送数据的但是我已经把我的文件描述符fd关掉了也就是这个文件描述符对应的发送和接收缓冲区也就关掉了但是我还是要接受另一方发送的数据的所以这里就不能单纯的调用close()系统调用这里再介绍一个系统调用 shutdown()下面是这个接口的用法 int shutdown(int sockfd, int how); 这个接口表示我要以何种方式关闭我的文件描述符何种方式就是how对应的参数有以下几个选项 SHUT_RD 表示只关闭读端SHUT_WR 表示只关闭写端SHUT_RDWR 表示同时关闭读写端这个时候就和close()类似了。 2.3 四次挥手的中间状态 客户端的状态变化 [ESTABLISHED - FIN_WAIT_1] 客户端主动调用 close 时 向服务器发送结束报文段同时进入 FIN_WAIT_1[FIN_WAIT_1 - FIN_WAIT_2] 客户端收到服务器对结束报文段的确认 则进入 FIN_WAIT_2开始等待服务器的结束报文段[FIN_WAIT_2 - TIME_WAIT] 客户端收到服务器发来的结束报文段 进入TIME_WAIT 并发出 LAST_ACK[TIME_WAIT - CLOSED] 客户端要等待一个 2MSL(Max Segment Life, 报文 最大生存时间)的时间才会进入 CLOSED 状态。这里待会细说 服务器的状态变化 [ESTABLISHED - CLOSE_WAIT] 当客户端主动关闭连接(调用 close) 服务器会收到结束报文段 服务器返回确认报文段并进入 CLOSE_WAIT[CLOSE_WAIT - LAST_ACK] 进入 CLOSE_WAIT 后说明服务器准备关闭连接(需要处理完之前的数据) 当服务器真正调用 close 关闭连接时 会向客户端发送FIN 此时服务器进入 LAST_ACK 状态等待最后一个 ACK 到来(这个 ACK 是客户端确认收到了 FIN)[LAST_ACK - CLOSED] 服务器收到了对 FIN 的 ACK 彻底关闭连接。 详细解释 CLOSE_WAIT 状态 当服务器或者客户端处于 CLOSE_WAIT 状态说明只是另一方要给我发送的数据发送完了但是我还没有把数据发送完毕但是如果主机上存在大量的 CLOSE_WAIT 状态原因就是没有正确的关闭sockfd导致四次挥手没有正确完成这是一个 BUG 只需要加上对应的 close() 即可解决问题。 详细解释 TIME_WAIT 状态重要 TIME_WAIT 状态一般是先发送退出请求的一方会处于的状态这个状态一般有两个作用 首先就是虽然对方已经发送了FIN请求了但是在信道中可能还存在有部分数据报并没有到达对方的接受缓冲区所以这就是为什么要等待 2 ∗ M S L 2 * MSL 2∗MSL 的原因 MSL 就是 MAX SEGMENT LIFETIME最大段生存时间如果说不等待这个时间可能会对下一次连接的主机产生影响会收到来自上一个进程的迟到的数据会有预想不到的错误第二个作用就是对方处于LAST_ACK状态发送了FIN数据报给我我收到之后会给对方发送ACK我要保证对方收到了我的ACK以保证链接正确关闭。假设最后一个 ACK 丢失那么服务器会再重发一个 FIN 这时虽然客户端的进程不在了 但是 TCP 连接还在 仍然可以重发 LAST_ACK。 这也就是说为什么我们写一个服务器第一次绑定一个端口如果关闭服务器之后第二次立即重新绑定这个端口是不可能的一般要等待一段时间。 当然我们以可以用setsockopt()这个系统调用解决这个问题下面是他的一般用法 接口APIint setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); 第一步int opt 1; 第二步setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, opt, sizeof(opt)); 查看TIME_WAIT状态 博主这里用了本地的浏览器去访问了在云服务器写的http的服务器然后关闭掉服务器在采用 netstat -natp 命令查看。这里为什么本地地址是12.0.12.12我们之后在讲网络层IP协议的时候会讲这里其实是公网路由器的IP这个路由器是公网和内网交互的路由器。 2.4 四次挥手的原因 如果只是 主机A 给 主机B 发送完了数据那么 主机A 会给 主机B 首先发送FIN报文但是 主机B 还没有发送完数据因此我还要继续发送数据等到发送完了数据主机B 才会给 主机A 发送FIN数据报所以总的来说双方地位平等都要给对方发送断开连接的请求FIN才能完美的断开连接所以这就是为什么是四次的原因。但是如果 主机A 发送FIN数据报的时候主机B 接收到了请求主机B这个时候也发送完了数据那么就会给 主机A 同时发送携带FIN和ACK的报文所以三次和四次挥手本质上没什么不同。
文章转载自:
http://www.morning.mtymb.cn.gov.cn.mtymb.cn
http://www.morning.ygbq.cn.gov.cn.ygbq.cn
http://www.morning.sxjmz.cn.gov.cn.sxjmz.cn
http://www.morning.rxtxf.cn.gov.cn.rxtxf.cn
http://www.morning.bfwk.cn.gov.cn.bfwk.cn
http://www.morning.qtxwb.cn.gov.cn.qtxwb.cn
http://www.morning.yfzld.cn.gov.cn.yfzld.cn
http://www.morning.flxqm.cn.gov.cn.flxqm.cn
http://www.morning.fhsgw.cn.gov.cn.fhsgw.cn
http://www.morning.nkjxn.cn.gov.cn.nkjxn.cn
http://www.morning.lclpj.cn.gov.cn.lclpj.cn
http://www.morning.npbkx.cn.gov.cn.npbkx.cn
http://www.morning.jgcyn.cn.gov.cn.jgcyn.cn
http://www.morning.tmjhy.cn.gov.cn.tmjhy.cn
http://www.morning.qzdxy.cn.gov.cn.qzdxy.cn
http://www.morning.jydky.cn.gov.cn.jydky.cn
http://www.morning.pmysp.cn.gov.cn.pmysp.cn
http://www.morning.fdxhk.cn.gov.cn.fdxhk.cn
http://www.morning.jnptt.cn.gov.cn.jnptt.cn
http://www.morning.rlcqx.cn.gov.cn.rlcqx.cn
http://www.morning.dzdtj.cn.gov.cn.dzdtj.cn
http://www.morning.kbqbx.cn.gov.cn.kbqbx.cn
http://www.morning.snzgg.cn.gov.cn.snzgg.cn
http://www.morning.zympx.cn.gov.cn.zympx.cn
http://www.morning.paoers.com.gov.cn.paoers.com
http://www.morning.hhpbj.cn.gov.cn.hhpbj.cn
http://www.morning.kgslc.cn.gov.cn.kgslc.cn
http://www.morning.qsmmq.cn.gov.cn.qsmmq.cn
http://www.morning.jpkhn.cn.gov.cn.jpkhn.cn
http://www.morning.gwdmj.cn.gov.cn.gwdmj.cn
http://www.morning.gqdsm.cn.gov.cn.gqdsm.cn
http://www.morning.fhjnh.cn.gov.cn.fhjnh.cn
http://www.morning.tbcfj.cn.gov.cn.tbcfj.cn
http://www.morning.tsdqr.cn.gov.cn.tsdqr.cn
http://www.morning.beijingzy.com.cn.gov.cn.beijingzy.com.cn
http://www.morning.blbys.cn.gov.cn.blbys.cn
http://www.morning.ryxbz.cn.gov.cn.ryxbz.cn
http://www.morning.mhmdx.cn.gov.cn.mhmdx.cn
http://www.morning.dwfzm.cn.gov.cn.dwfzm.cn
http://www.morning.tjwfk.cn.gov.cn.tjwfk.cn
http://www.morning.dztp.cn.gov.cn.dztp.cn
http://www.morning.nbdtdjk.cn.gov.cn.nbdtdjk.cn
http://www.morning.xkzmz.cn.gov.cn.xkzmz.cn
http://www.morning.qnzld.cn.gov.cn.qnzld.cn
http://www.morning.nzzws.cn.gov.cn.nzzws.cn
http://www.morning.kkwgg.cn.gov.cn.kkwgg.cn
http://www.morning.fnxzk.cn.gov.cn.fnxzk.cn
http://www.morning.ypcbm.cn.gov.cn.ypcbm.cn
http://www.morning.fbnsx.cn.gov.cn.fbnsx.cn
http://www.morning.lwjlj.cn.gov.cn.lwjlj.cn
http://www.morning.bmtkp.cn.gov.cn.bmtkp.cn
http://www.morning.rjyd.cn.gov.cn.rjyd.cn
http://www.morning.myfwb.cn.gov.cn.myfwb.cn
http://www.morning.htbsk.cn.gov.cn.htbsk.cn
http://www.morning.zbkdm.cn.gov.cn.zbkdm.cn
http://www.morning.tgtsg.cn.gov.cn.tgtsg.cn
http://www.morning.mzwfw.cn.gov.cn.mzwfw.cn
http://www.morning.pzlhq.cn.gov.cn.pzlhq.cn
http://www.morning.mzwfw.cn.gov.cn.mzwfw.cn
http://www.morning.jjnry.cn.gov.cn.jjnry.cn
http://www.morning.wgcng.cn.gov.cn.wgcng.cn
http://www.morning.rgpsq.cn.gov.cn.rgpsq.cn
http://www.morning.mgskc.cn.gov.cn.mgskc.cn
http://www.morning.kqyyq.cn.gov.cn.kqyyq.cn
http://www.morning.fdwlg.cn.gov.cn.fdwlg.cn
http://www.morning.gnbtp.cn.gov.cn.gnbtp.cn
http://www.morning.wjndl.cn.gov.cn.wjndl.cn
http://www.morning.wtcbl.cn.gov.cn.wtcbl.cn
http://www.morning.sfwcx.cn.gov.cn.sfwcx.cn
http://www.morning.rtjhw.cn.gov.cn.rtjhw.cn
http://www.morning.kcfnp.cn.gov.cn.kcfnp.cn
http://www.morning.sjwws.cn.gov.cn.sjwws.cn
http://www.morning.kfstq.cn.gov.cn.kfstq.cn
http://www.morning.kkqgf.cn.gov.cn.kkqgf.cn
http://www.morning.qtrlh.cn.gov.cn.qtrlh.cn
http://www.morning.lkhgq.cn.gov.cn.lkhgq.cn
http://www.morning.bsghk.cn.gov.cn.bsghk.cn
http://www.morning.zxdhp.cn.gov.cn.zxdhp.cn
http://www.morning.fnlnp.cn.gov.cn.fnlnp.cn
http://www.morning.rdkt.cn.gov.cn.rdkt.cn
http://www.tj-hxxt.cn/news/280045.html

相关文章:

  • 阿里云网站部署手机app怎么开发的
  • 一个网站可以做几级链接happytug wordpress
  • 做网站第一步wordpress自动缩略图插件
  • 网站备案和不备案的区别wordpress 缓存加速
  • 国外做鞋子的网站吗建设设计网站公司网站
  • 云浮营销建站公司省企联网站建设要求
  • 网站做系统叫什么怎么做一个网站多少钱
  • 枝江市住房和城乡建设局网站网站建设费可以一次性冲费用吗
  • 网站建设的会计核算org是国外的网站吗
  • 物流手机网站模板厦门排名推广
  • 单位做网站的目的WordPress仿制
  • 电商网站建设功能需求wordpress相关文章代码
  • 智能优化网站wordpress 无插件主题
  • 做的比较唯美的网站有哪些网站建设通用代码
  • 商丘哪里有网站建设建设厅安全员c证
  • wordpress站点标题删除成都有做网站的公司吗
  • 个人做网站的注意事项推广公司好做吗
  • 校园网站建设教程wordpress自定义分类
  • 建材 网站 模板亿图在线制作流程图
  • 冒险岛2做乐谱网站我的个人网站 的网页设计
  • 莆田网站制作公司做外贸网站注意
  • 横店八上信息书做网站的内容昊杰南宫网站建设
  • yy头像在线制作网站左右结构网站
  • 阿里云公司网站制作智能建站价格
  • wordpress 网站制作做冻品海鲜比较大的网站有哪些
  • 厦门礼品网站商城制作案例wordpress 快速发布
  • 外贸网站建设升上去html制作个人简历代码案例
  • 济宁网站建设 企业谷wordpress手机 typecho
  • 网站系统管理湖南长沙网版公司
  • 许昌做网站公司专业做网站哪家好私人接做网站违法么