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

十年前网站开发语言咸阳哪里做网站

十年前网站开发语言,咸阳哪里做网站,郑州房地产网站建设,商务网站开发前期项目费用预算什么是套接字#xff1f;Socket基本介绍一、什么是套接字#xff1f;二、套接字特性三、套接字缓冲区一、什么是套接字#xff1f; 套接字是一种通信机制#xff08;通信的两方的一种约定#xff09;#xff0c;socket屏蔽了各个协议的通信细节#xff0c;提供了tcp/ip… 什么是套接字Socket基本介绍一、什么是套接字二、套接字特性三、套接字缓冲区一、什么是套接字 套接字是一种通信机制通信的两方的一种约定socket屏蔽了各个协议的通信细节提供了tcp/ip协议的抽象对外提供了一套接口同过这个接口就可以统一、方便的使用tcp/ip协议的功能。这使得程序员无需关注协议本身直接使用socket提供的接口来进行互联的不同主机间的进程的通信。我们可以用套接字中的相关函数来完成通信过程。 发送方的发送数据的处理流程大致为用户空间 - 内核 - 网卡 - 网络 在用户态空间调用发送数据接口 send/sento/wirte 等写数据包在内核空间会根据不同的协议走不同的流程。以TCP为例TCP是一种流协议内核只是将数据包追加到套接字的发送队列中真正发送数据的时刻则是由TCP协议来控制的。TCP协议处理完成之后会交给IP协议继续处理最后会调用网卡的发送函数将数据包发送到网卡。 接收方的接收数据的处理流程大致为网络 - 网卡 - 内核(epoll等) - 进程(业务处理逻辑) 网卡会通过轮询或通知的方式接收数据Linux做了优化组合了通知和轮询的机制简单来说在CPU响应网卡中断时不再仅仅是处理一个数据包就退出而是使用轮询的方式继续尝试处理新数据包直到没有新数据包到来或者达到设置的一次中断最多处理的数据包个数。数据离开网卡驱动之后就进入到了协议栈经过IP层、网络层协议的处理就会触发IO读事件比如epoll的reactor模型中就会触发对应的读事件然后回调对应的IO处理函数数据之后会交给业务线程来处理比如Netty的数据接收处理流程就是这样的。 二、套接字特性 套接字的特性有三个属性确定它们是域domain类型type和协议protocol。 域指定套接字通信中使用的网络介质。最常见的套接字域是 AF_INETIPv4或者AF_INET6(IPV6)它是指 Internet 网络。 类型 流套接字SOCK_STREAM 流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送并按顺序接收。流套接字之所以能够实现可靠的数据服务原因在于其使用了传输控制协议即TCP数据报套接字SOCK_DGRAM 数据报套接字提供了一种无连接的服务。该服务并不能保证数据传输的可靠性数据有可能在传输过程中丢失或出现数据重复且无法保证顺序地接收到数据。数据报套接字使用UDPUser Datagram Protocol协议进行数据的传输。原始套接字SOCK_RAW 原始套接字与标准套接字标准套接字指的是前面介绍的流套接字和数据报套接字的区别在于原始套接字可以读写内核没有处理的IP数据包而流套接字只能读取TCP协议的数据数据报套接字只能读取UDP协议的数据。因此如果要访问其他协议发送数据必须使用原始套接字。 协议IPPROTO_TCPIPPROTO_UDP 三、套接字缓冲区 每个 socket 被创建后都会分配两个缓冲区输入缓冲区和输出缓冲区。write()/send() 并不立即向网络中传输数据而是先将数据写入缓冲区中再由TCP协议将数据从缓冲区发送到目标机器。一旦将数据写入到缓冲区函数就可以成功返回不管它们有没有到达目标机器也不管它们何时被发送到网络这些都是TCP协议负责的事情。read()/recv() 函数也是如此也从输入缓冲区中读取数据而不是直接从网络中读取。 用户程序缓冲区 用户进程通过系统调用访问系统资源的时候需要切换到内核态而这对应一些特殊的堆栈和内存环境必须在系统调用前建立好。而在系统调用结束后cpu会从核心模式切回到用户模式而堆栈又必须恢复成用户进程的上下文。而这种切换就会有大量的耗时。 一些程序在读取文件时会先申请一块内存数组称为buffer然后每次调用read读取设定字节长度的数据写入buffer用较小的次数填满buffer。之后的程序都是从buffer中获取数据当buffer使用完后在进行下一次调用填充buffer。所以说用户缓冲区的目的是为了减少系统调用次数从而降低操作系统在用户态与核心态切换所耗费的时间。除了在进程中设计缓冲区内核也有自己的缓冲区。 内核缓冲区 当一个用户进程要从磁盘读取数据时内核一般不直接读磁盘而是将内核缓冲区中的数据复制到进程缓冲区中。但若是内核缓冲区中没有数据内核会把对数据块的请求加入到请求队列然后把进程挂起为其它进程提供服务。等到数据已经读取到内核缓冲区时把内核缓冲区中的数据读取到用户进程中才会通知进程。 你可以认为read是把数据从内核缓冲区复制到进程缓冲区。write是把进程缓冲区复制到内核缓冲区。当然write并不一定导致内核的写动作比如os可能会把内核缓冲区的数据积累到一定量后再一次写入。这也就是为什么断电有时会导致数据丢失。所以说内核缓冲区是为了在OS级别提高磁盘IO效率优化磁盘写操作。
http://wiki.neutronadmin.com/news/321450/

相关文章:

  • 做淘宝客网站赚钱吗cms网站建设有多少条数据
  • 临夏城乡建设局网站wordpress流量插件
  • 网站制作用的软件大型建设工程类考试辅导网站
  • 做网站开发很赚钱吗开通网站申请书
  • 网站建设 精品课程墨猴seo排名公司
  • 建设网站所采用的技术响应式网站微博视频教程
  • 观澜做网站山西做网站的企业
  • 搭建网站手机软件wordpress产品模板
  • 公司网站怎么做啊wordpress能输数学公式吗
  • 云服务器可以做几个网站如何做网站 百度
  • 网站设计制作哪家服务好石景山网站建设公司
  • 企业网站有那些建设网站导航怎么盈利
  • 东莞市建网站中铁建设集团集网登录
  • 网站建设中 html5 模板wordpress编辑器替换
  • 东阳海天建设集团网站网络舆情处理公司
  • 网站素材模板 站长现在做微信开发网站多少钱
  • 幼教资源网网站开发策划书陌陌引流推广软件
  • 深圳 微网站建设ydgcm扬州市建设局招标网站
  • 泉州最专业手机网站建设定制合伙建网站
  • 学做家常菜的网站wordpress做登陆页面模板
  • 物流那个网站做推广好网站改版后多久才收录
  • 潍坊mip网站建设旅行社网站规划与建设的流程图
  • 舞蹈培训机构网站建设郑州网站推广排名
  • 网站建设方法氵金手指排名27网页设计教程ppt封面图片
  • 企业网站建设及维护费用光聚济南网站建设
  • 网站建设公司新闻做行业网站广告
  • 温州网站关键字优化韩国的电商网站
  • 温州做公众号和做网站的地方如何编辑网站内容
  • 推荐几个自学做衣服的网站青岛有名的互联网公司
  • 灌南县规划局网站一品嘉苑规划建设赣州市建设工程质量监督管理站网站