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

安庆做网站的百度知道灰色词代发收录

安庆做网站的,百度知道灰色词代发收录,wordpress博客个人主页,云南做公司网站多少钱在使用socket(也就是套接字)编程的时候,其实是工作于应用层和传输层之间 如果使用的是基于TCP的socket,那每个数据包的发送的过程大致为: 数据通过socket套接字构造符合TCP协议的数据包在屏蔽底层协议的情况下&#…

在使用socket(也就是套接字)编程的时候,其实是工作于应用层和传输层之间

如果使用的是基于TCP的socket,那每个数据包的发送的过程大致为:

  1. 数据通过socket套接字构造符合TCP协议的数据包
  2. 在屏蔽底层协议的情况下,可以理解为TCP层直接将该数据包发往目标机器的TCP层
  3. 目标机器解包得到数据

使用TCP连接收发数据需要做三件事:

  1. 建立连接
  2. 收发数据
  3. 断开连接

下面将对这三点展开说明:

建立连接:TCP三次握手

在没连接的情况下,客户端的TCP状态处于CLOSED状态,服务端的TCP处于CLOSED(未开启监听)或LISTEN(开启监听)状态。

TCP中,服务端与客户端建立连接的过程如下:

  1. 客户端主动发起连接(在socket编程中则为调用connect函数),向服务端发送一个SYN包。这个SYN包可以看作是一个小数据包,不过其中没有任何实际数据,仅有诸如TCP首部等协议包必须数据。
  2. 此时客户端状态从CLOSED变为SYN_SENT
  3. 服务端收到SYN包,并且,服务端返回一个针对该SYN包的响应包(ACK包)和一个新的SYN包。在socket编程中,服务端能收到SYN包的前提是,服务端已经调用过listen函数使其处于监听状态(必须处于LISTEN状态),并且处于调用accept函数后,等待连接的阻塞状态。
  4. 此时服务端状态从LISTEN变为SYN_RCVD
  5. 客户端收到服务端发来的两个包,并针对新SYN包,返回ACK包。
  6. 此时客户端状态从SYN_SENT切换至ESTABLISHED,该状态表示可以传输数据了。
  7. 服务端收到ACK包,成功建立连接,accept函数返回客户端套接字。
  8. 此时服务端状态从SYN_RCVD切换至ESTABLISHED

收发数据

当连接建立之后,就可以通过客户端套接字进行收发数据了。


断开连接:TCP四次挥手

  1. 双方中有一方(假设为A为主动方,另一方为B)主动关闭连接(调用close,或者其进程本身被终止等情况),则A向B发送FIN包,A从ESTABLISHED状态切换为FIN_WAIT_1状态
  2. B接收到FIN包,并发送ACK包,B从ESTABLISHED状态切换为CLOSE_WAIT状态
  3. A接收到ACK包,此时A从FIN_WAIT_1状态切换为FIN_WAIT_2状态
  4. 一段时间后,B调用自身的close函数,并发送FIN包,B从CLOSE_WAIT状态切换为LAST_ACK状态
  5. A接收到FIN包,并发送ACK包,A从FIN_WAIT_2状态切换为TIME_WAIT状态
  6. B接收到ACK包,关闭连接。此时B从LAST_ACK状态切换为CLOSED状态
  7. A等待一段时间(两倍的最长生命周期)后,关闭连接。此时A从TIME_WAIT状态切换为CLOSED状态

listen函数

#include <sys/socket.h>
int listen(int sockfd, int backlog);

现在的backlog仅指Accept队列的最大长度。另一个队列,SYN队列的最大长度由系统的其它变量决定:
客户端发送的SYN到达服务器之后,服务端返回SYN/ACK,并将该客户端放置SYN队列中(第一次+第二次握手)
当服务端接收到客户端的ACK之后(第三次握手),完成握手,服务端将对应的连接从SYN队列中取出,放入Accept队列,等待accept函数接收并处理其请求


accept函数
accept函数由TCP服务器调用,用于从Accept队列中pop出一个已完成的连接。
若Accept队列为空,则accept函数所在的进程阻塞。


服务器优化Tip:
如果服务器端在每接收到一个请求时,都将日志在屏幕上打印(例如std::cout),这种与输出设备交互的IO很慢。

可以尝试将日志打印转为文件输出。

http://www.hrbkazy.com/news/36796.html

相关文章:

  • 网站全局搜索华为云速建站
  • 建设网站的安全性介绍南昌百度seo
  • 西安做网站微信公司哪家好公司网站建设需要注意什么
  • 莱州卫计委网站百度客户端手机版
  • 网站域名备案需要什么百度一下百度官网
  • 招投标网站开发网络运营推广具体做什么工作
  • 网站前台的功能模块活动策划
  • 普通电脑怎么做网站服务器武汉千锋教育培训机构怎么样
  • 邯郸去哪做网站改版品牌推广与传播怎么写
  • 国家高新技术企业认定有什么好处seo推广费用
  • 个人电脑做网站主机360官方网站网址
  • 能用pinduoduo做网站吗网络营销的成功案例
  • 中山网站建设价格seo排名优化技术
  • 老板让做公司网站设计百度爱采购推广平台
  • 西宁网站建设平台公司域名检测工具
  • 成都建站网站模板网站seo啥意思
  • 文化传播集团网站建设房地产网站模板
  • 网站策划书ppt关键词指数批量查询
  • 宝鸡网站建设的公司徐州网页关键词优化
  • 博物馆网站建设的根本意义百度搜索风云榜下载
  • 简述网站开发的流程快速提升排名seo
  • 贵阳做网站的公司短视频怎么赚钱
  • 属于网页制作平台seo排名点击软件推荐
  • 金华竞价排名 金华企业网站建设网站seo优化培训
  • 设计素材图库seo优化查询
  • 官方网站英语深圳开发公司网站建设
  • 做网站需要用什么技术廊坊今日头条新闻
  • 电子商务网站制作步骤seo数据统计分析工具有哪些
  • 做彩平图的素材那个网站有360优化大师安卓版下载
  • 独立页面成网站通过做推广的技巧