打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
专栏:TCP/IP详解

最新更新文章

[编程语言] 高性能网络服务器3--TCP消息的接收

这篇文章将试图说明应用程序如何接收网络上发送过来的TCP消息流,由于篇幅所限,暂时忽略ACK报文的回复和接收窗口的滑动。为了快速掌握本文所要表达的思想,我们可以带着以下问题阅读:1、应用程序调用read、recv等方法时,socket套接字可以设置为阻塞或者非阻塞,这两种方式是如何工作的?2、若socket为默认的阻塞套接字,此时recv方法传入的len参数,是表示必须超时(SO_RC...

TCPIP详解

[编程语言] 高性能网络服务器7--TCP连接的内存使用

当服务器的并发TCP连接数以十万计时,我们就会对一个TCP连接在操作系统内核上消耗的内存多少感兴趣。socket编程方法提供了SO_SNDBUF、SO_RCVBUF这样的接口来设置连接的读写缓存,linux上还提供了以下系统级的配置来整体设置服务器上的TCP内存使用,但这些配置看名字却有些互相冲突、概念模糊的感觉,如下(sysctl -a命令可以查看这些配置):[cpp] ...

TCPIP详解

[编程语言] 高性能网络服务器6--reactor反应堆与定时器管理

反应堆开发模型被绝大多数高性能服务器所选择,上一篇所介绍的IO多路复用是它的实现基础。定时触发功能通常是服务器必备组件,反应堆模型往往还不得不将定时器的管理囊括在内。本篇将介绍反应堆模型的特点和用法。首先我们要谈谈,网络编程界为什么需要反应堆?有了IO复用,有了epoll,我们已经可以使服务器并发几十万连接的同时,维持高TPS了,难道这还不够吗?我的答案是,技术层面足够了,但在软件...

TCPIP详解

[编程语言] 高性能网络服务器5--IO复用与并发模型

对于服务器的并发处理能力,我们需要的是:每一毫秒服务器都能及时处理这一毫秒内收到的数百个不同TCP连接上的报文,与此同时,可能服务器上还有数以十万计的最近几秒没有收发任何报文的相对不活跃连接。同时处理多个并行发生事件的连接,简称为并发;同时处理万计、十万计的连接,则是高并发。服务器的并发编程所追求的就是处理的并发连接数目无限大,同时维持着高效率使用CPU等资源,直至物理资源首先耗尽。并...

TCPIP详解

[编程语言] 高性能网络服务器4---TCP连接的关闭

TCP连接的关闭有两个方法close和shutdown,这篇文章将尽量精简的说明它们分别做了些什么。为方便阅读,我们可以带着以下5个问题来阅读本文:1、当socket被多进程或者多线程共享时,关闭连接时有何区别?2、关连接时,若连接上有来自对端的还未处理的消息,会怎么处理?3、关连接时,若连接上有本进程待发送却未来得及发送出的消息,又会怎么处理?4、so_linger这个功能的...

TCPIP详解

[编程语言] 高性能网络编程2--TCP消息的发送

在上一篇中,我们已经建立好的TCP连接,对应着操作系统分配的1个套接字。操作TCP协议发送数据时,面对的是数据流。通常调用诸如send或者write方法来发送数据到另一台主机,那么,调用这样的方法时,在操作系统内核中发生了什么事情呢?我们带着以下3个问题来细细分析:发送方法成功返回时,能保证TCP另一端的主机接收到吗?能保证数据已经发送到网络上了吗?套接字为阻塞或者非阻塞时,发送方法做的事情有何不...

消息发送 高性能服务器

[编程语言] TCP/IP详解--nagle算法和TCP_NODELAY

在客户端一直给服务器发送小数据的时候,接受到一个回应会在很长的时间以后,但是将多个小数据写操作合并成一个写操作,问题就没了。这个事件的缘由可能是TCP_NODELAY的原因现在大概明白,是由于nagle算法在捣乱。TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的...

TCPIP详解 TCP_NODELAY

[编程语言] 高性能网络编程--accept建立连接

最近在部门内做了个高性能网络编程的培训,近日整理了下PPT,欲写成一系列文章从应用角度谈谈它。编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的效率,追求更快的完成项目功能点、希望应用代码完全不关心通讯细节。他们更喜欢在OO世界里,去实现某个接口、实现这个组件预定义的各种模式、设置组件参数来达到目...

网络服务器 accept

[编程语言] TCP/IP详解--如何处理TIME_WAIT状态

netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'会得到类似下面的结果,具体数字会有所不同:LAST_ACK 1SYN_RECV 14ESTABLISHED 79FIN_WAIT1 28FIN_WAIT2 3CLOSING 5TIME...

TCPIP 网络编程 c

[编程语言] TCP/IP详解--影响TCP性能的几种协议因素

影响TCP性能的协议因素:(1)TCP连接建立握手(2)TCP慢启动拥塞控制;(3)数据聚集的Nagle算法;(4)用于捎带确认的TCP延迟确认机制。(5)TIME_WAIT时延和端口耗尽。1、2可通过长连接避免,3可使用TCP_NODELAY避免,4可通过调整内核栈参数避免,但调整需谨慎,5通常只在性能测试环境出现。其中最后一个TIME_WAIT是TCP协议中...

TCPIP 网络编程 异常

[编程语言] TCP/IP详解--接受RST回应的几种情况

应该没有人会质疑,现在是一个网络时代了。应该不少程序员在编程中需要考虑多机、局域网、广域网的各种问题。所以网络知识也是避免不了学习的。而且笔者一直觉得TCP/IP网络知识在一个程序员知识体系中必需占有一席之地的。在TCP协议中RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包。而接收端收到RST...

网络编程 TCPIP c 异常

[互联网] TCP/IP详解--TCP连接的建立与终止

1.TCP连接的建立(1)首先是服务器初始化的过程,从CLOSED(关闭)状态开始通过顺序调用SOCKET、BIND、LISTEN和ACCEPT原语创建Socket套接字,进入LISTEN(监听)状态,等待客户端的TCP传输连接请求。     (2)客户端最开始也是从CLOSED状态开始调用SOCKET原语创建新的Socket套接字,然后在需要再调用CONNECT原语,向服务器发送一个...

网络编程 TCPIP c

[互联网] TCP/IP详解--拥塞控制(二)

TCP的拥塞控制1.  拥塞:即对资源的需求超过了可用的资源。若网络中许多资源同时供应不足,网络的性能就要明显变坏,整个网络的吞吐量随之负荷的增大而下降。    拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提:网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。...

网络编程 TCPIP

[编程语言] TCP/IP详解--流量控制机制

1. 利用滑动窗口实现流量控制    如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。    利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。    设A向B发送数据。在连接建立时,B告诉了A:“我的接收窗口是 rwnd = 400 ”(这里的 rwnd 表示 receiver...

网络编程 TCPIP

[互联网] TCP/IP详解--拥塞控制机制(一)

基于TCP的端到端的拥塞控制机制1988年Van Jacobson指出了TCP在控制网络拥塞方面的不足,并提出了“慢启动”(Slow Start)、“拥塞避免”(Congestion Avoidance)的算法。1990年出现的TCP Reno版本增加了“快速重传 ”(Fast Retransmit)、“快速恢复”(Fast Recovery)算法,避免了网络拥塞不严重时采用“慢启动”算法...

网络编程 TCPIP c

[互联网] TCP/IP详解--超时重传机制

与数据链路层的ARQ协议相类似,TCP使用超时重发的重传机制。即:TCP每发送一个报文段,就对此报文段设置一个超时重传计时器。此计时器设置的超时重传时间RTO(Retransmission Time-Out)应当略大于TCP报文段的平均往返时延RTT,一般可取RTO=2RTT。但是,也可以根据具体情况人为调整RTO的值,例如可以设置此超时重传时间RTO=90秒。当超过了规定的超时重传时间还未收...

网络编程 TCPIP

[编程语言] TCP/IP详解--TCP/IP协议簇五层协议中各个层次的作用

从协议分层模型方面来讲,TCP/IP由四个层次组成:数据链路层、网络层、传输层、应用层一、数据链路层   数据链路层是负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。 传输有地址的帧以及错误检测功能 。        一、流量控制,有基于反馈的流控制盒基于速率的流控制。        二、错误检测盒纠正        在这一层,数据的...

网络编程 TCPIP

[编程语言] TCP/IP详解--ICMP 控制报文协议

一。为什么需要ICMP?因为IP协议不提供可靠性且不能保证信息传递,因此发生问题时,通知发送人是很重要的。(IP协议是一种不可靠的协议,无法进行差错控制。但IP协议可以借助其他协议来实现这一功能,如ICMP)二。什么是ICMP? ICMP: Internet Control Message Protocol 即Internet消息控制协议。ICMP定义了一套差错报文和控制报文,用于...

网络编程 TCPIP

[互联网] TCP/IP详解--IP路由选择详解

一、实例一 在TCP/IP详解这本书中讲解IP路由选择的时候,过程讲解的比较粗略,这里详细介绍下其中的整体过程。在这篇文章中,将通过一个案例,来帮助大家深入了解IP路由的选择过程。希望这篇文章能够帮助大家扫清IP路由选择上的一些误区。如下图,现在这么一个网络。主机甲与主机乙分别在两个不同的网段上,中间通过路由器进行连接。现在假设主机甲要跟主机乙进行通信,那么主机甲如何才能够找到主机...

c 网络编程

[编程语言] TCP/IP详解--数据链路层

链路层上最常见的封装就是以太网和IEEE 802封装,这里就使用以太网作为讲解的对象。一、以太网帧格式        以太网的帧格式才有6字节的目的地址和源头地址。帧长度字段是指它后续数据的字节长度,但不包括CRC校验码。这个长度是提供给上层协议的数据负载,也就是上层协议封装的数据最长度不要超过以太网帧的数据长度。最小数据帧尾46,最大数据帧长为1500.        在...

网络编程 c


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
掌握这28张图,面试再也不怕被问TCP知识了
C#Socket编程详解(一)TCP与UDP简介
OSI1至7层简答
计算机网络知识点全面总结(有这一篇就够了!!!)
「计算机网络」计算机网络知识,图解分析,清晰易懂
TCP/IP详解学习笔记 这位仁兄写得太好了
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服