TCP/IP
文章平均质量分 55
有时需要偏执狂
一定要搞懂,千万不要心存侥幸,否则一些问题会让你痛苦不堪(源码面前,了无秘密)。
拥有一某三分地不容易,贵在坚持。
展开
-
TCP/IP 实践之Ubuntu 16.04下安装网络流量分析工具 Wireshark
Wireshark是windows下最好用的抓包工具,可以清晰的看清楚协议包里面的内容。所以这个学习TCP/IP协议栈必备的工具。原创 2017-09-05 10:12:37 · 1443 阅读 · 0 评论 -
高性能网络服务器6--reactor反应堆与定时器管理
反应堆开发模型被绝大多数高性能服务器所选择,上一篇所介绍的IO多路复用是它的实现基础。定时触发功能通常是服务器必备组件,反应堆模型往往还不得不将定时器的管理囊括在内。本篇将介绍反应堆模型的特点和用法。首先我们要谈谈,网络编程界为什么需要反应堆?有了IO复用,有了epoll,我们已经可以使服务器并发几十万连接的同时,维持高TPS了...转载 2018-03-20 00:13:51 · 205 阅读 · 0 评论 -
高性能网络服务器7--TCP连接的内存使用
当服务器的并发TCP连接数以十万计时,我们就会对一个TCP连接在操作系统内核上消耗的内存多少感兴趣。socket编程方法提供了SO_SNDBUF、SO_RCVBUF这样的接口来设置连接的读写缓存,linux上还提供了以下系统级的配置来整体设置服务器上的TCP内存使用,但这些配置看名字却有些互相冲突、概念模糊的感觉,如下(sysctl ...转载 2018-03-20 00:15:31 · 235 阅读 · 0 评论 -
TCP交互数据流及成块数据流
引言建立在TCP协议上的应用层协议有非常多,如FTP、HTTP、Telnet等。这些协议依据数据传输的多少能够分为两类:交互数据类型和成块数据类型。交互数据类型,如:Telnet。这类协议一般仅仅做小流量的数据交换,比方每按下一个键,要回显一些字符。成块数据类型,如:FTP,这类协议须要传输的数据比较多。一般传输的数据量比较大。针对这两种不同的情况,TCP采用不同的策略进行数据传...原创 2018-03-20 22:02:22 · 3876 阅读 · 1 评论 -
关于HTTP协议,一篇就够了
关于HTTP协议,一篇就够了 HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HT...转载 2018-03-21 00:47:40 · 4174 阅读 · 0 评论 -
HTTP协议简单解释
#1、简单的HTTP协议HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP 协议和 TCP/IP 协议族内的其他众多的协议相同, 用于客户端和服务器之间的通信。请求访问文本或图像等资源的一端称为客户端, 而提供资源响应的一端称为服务器端。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4G5InmmX-1670146185875)(//img-blog.csdn.net/20180321104418441?waterma原创 2018-03-21 10:47:38 · 128276 阅读 · 8 评论 -
TCP超时与重传
1、超时重传1、引言 TCP提供可靠的运输层。它使用的方法之一就是确认从另一端收到的数据。但数据和确认都有可能会丢失。TCP通过在发送时设置一个定时器来解决这种问题。如果当定时器溢出时还没有收到确认,它就重传该数据。对任何实现而言,关键之处就在于超时和重传的策略,即怎样决定超时间隔和如何确定重传的频率。 对每个连接, TCP管理4个不同的定时器:1、重传定时器使用于当希望收到另一端的...原创 2018-04-09 20:33:17 · 12212 阅读 · 2 评论 -
TCP坚持定时器和保活定时器
开始。慢慢看起来。原创 2018-04-09 20:34:56 · 525 阅读 · 0 评论 -
Nignx服务器CLOSE_WAIT和TIME_WAIT过高分析
来自:http://blog.csdn.net/shootyou/article/details/6622226 昨天解决了一个HttpClient调用错误导致的服务器异常,具体过程如下:http://blog.csdn.net/shootyou/article/details/6615051里头的分析过程有提到,通过查看服务器网络状态检测到服务器有大量的CLOSE_WAIT...转载 2018-03-27 15:48:22 · 2190 阅读 · 1 评论 -
高性能网络服务器5--IO复用与并发模型
对于服务器的并发处理能力,我们需要的是:每一毫秒服务器都能及时处理这一毫秒内收到的数百个不同TCP连接上的报文,与此同时,可能服务器上还有数以十万计的最近几秒没有收发任何报文的相对不活跃连接。同时处理多个并行发生事件的连接,简称为并发;同时处理万计、十万计的连接,则是高并发。服务器的并发编程所追求的就是处理的并发连接数目无限大,同时维持...转载 2018-03-20 00:12:53 · 350 阅读 · 0 评论 -
高性能网络服务器4---TCP连接的关闭
TCP连接的关闭有两个方法close和shutdown,这篇文章将尽量精简的说明它们分别做了些什么。为方便阅读,我们可以带着以下5个问题来阅读本文:1、当socket被多进程或者多线程共享时,关闭连接时有何区别?2、关连接时,若连接上有来自对端的还未处理的消息,会怎么处理?3、关连接时,若连接上有本进程待发送却未来得及发送出的消...转载 2018-03-20 00:11:00 · 707 阅读 · 0 评论 -
wireshark分析ARP协议
通过以太网发送IP数据包,需要先封装32位的IP地址和48位的MAC地址。由于发送数据包时仅仅知道目标IP地址,不指定对方MAC地址,就需要接着ARP协议通过IP地址去询问目标的MAC地址,才可以正常通信。 1、 PC1想发送数据到PC2,首先检测本地缓存ARP缓存表和PC2IP匹配的MAC。 2、如果没有找到此条目,那么PC1将广播一个ARP请求帧到本地网络的所有主机。本地网络上每台主机原创 2017-09-07 15:44:17 · 8827 阅读 · 1 评论 -
wireshark分析IP协议
传送门: TCP/IP协议不清楚请回看TCP/IP协议理论1、ping 10.13.3.213 -l 3000通过ping同一个局域网内的主机,其中通过了两个路由器,并且数据大于3000,IP数据报会分片。ping利用了IP和ICMP协议。可以用来分析这两个协议。 上图ping所产生的所有报文: 捕获文件中捕获了4个ping包。41~46是一个完整的ping包,其中41~43是请求包,原创 2017-09-07 17:05:49 · 8665 阅读 · 1 评论 -
wireshark分析UDP数据包
这里利用wireshark抓捕QQ登陆时候的UDP数据包,分析其中的协议,仅仅分析众多数据包中的一帧。因为不是为了破译啥,仅仅是为了抓包看看具体的UDP协议而已。 其中上面QICQ就是其中一条UDP数据包。QICQ - IM是QQ定义的应用层协议如下: UDP协议部分: 腾讯OICQ部分原创 2017-09-09 20:42:20 · 25973 阅读 · 1 评论 -
wireshark分析TCP数据包
TCP/IP协议不清楚请回看TCP/IP协议理论在虚拟机运行ubuntu,通过windows下的cuteftp连接ubuntu,利用wireshark进行抓包分析。出现如下数据帧(注意wireshark如何过滤消息): 其中47,48,49分别是三次握手对应的帧信息。三次握手47帧/握手1 上面信息已经非常明确。这是一个客户机请求连接帧。只设置了SYN标志位。并且初始化序列号和确认应答号都为原创 2017-09-09 22:05:16 · 14979 阅读 · 0 评论 -
LwIP之TCP
TCP协议理论支撑TCP控制块 和UDP控制块类似,对TCP的操作实际上就是对TCP结构中各个字段的操作。//11种状态枚举定义enum tcp_state { CLOSED = 0,//没有连接 LISTEN = 1,//服务器进入侦听,等待客户机连接 SYN_SENT = 2,//连接请求发送,等待确认 SYN_RCVD = 3,//已收到原创 2017-10-16 17:10:07 · 5285 阅读 · 0 评论 -
TCP/IP协议理论
参考文献: 《TCP-IP详解卷一:协议》 《用TCP-IP进行网际互联第一卷:原理、协议与结构》 《LwIP协议深度剖析与实战演练》 《嵌入式Internet TCP IP基础、实现及应用》TCP/IP协议族通俗综述 OSI结构仅仅停留在理论阶段,没有以实践作为依据,实现起来过去复杂,所以TCP/IP协议栈简化了。从底层到顶层剖析TCP/IP协议栈1...原创 2017-08-28 19:35:28 · 6625 阅读 · 1 评论 -
高性能网络编程1--accept建立连接
最近在部门内做了个高性能网络编程的培训,近日整理了下PPT,欲写成一系列文章从应用角度谈谈它。编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的效率,追求更快的完成项目功能点、希望应用代码完全不关心通讯细节。他们更喜欢在OO世界里,去实现...转载 2018-03-20 00:05:05 · 194 阅读 · 0 评论 -
高性能网络编程2--TCP消息的发送
在高性能网络编程1–accept建立连接中,我们已经建立好的TCP连接,对应着操作系统分配的1个套接字。操作TCP协议发送数据时,面对的是数据流。通常调用诸如send或者write方法来发送数据到另一台主机,那么,调用这样的方法时,在操作系统内核中发生了什么事情呢?我们带着以下3个问题来细细分析:发送方法成功返回时,能保证TCP另一端...转载 2018-03-20 00:06:50 · 177 阅读 · 0 评论 -
高性能网络服务器3--TCP消息的接收
这篇文章将试图说明应用程序如何接收网络上发送过来的TCP消息流,由于篇幅所限,暂时忽略ACK报文的回复和接收窗口的滑动。为了快速掌握本文所要表达的思想,我们可以带着以下问题阅读:1、应用程序调用read、recv等方法时,socket套接字可以设置为阻塞或者非阻塞,这两种方式是如何工作的?2、若socket为默认的阻塞套接字,此时...转载 2018-03-20 00:09:37 · 664 阅读 · 0 评论 -
超时重传、慢启动和拥塞控制、快速重传及恢复
1、超时重传1、引言 TCP提供可靠的运输层。它使用的方法之一就是确认从另一端收到的数据。但数据和确认都有可能会丢失。TCP通过在发送时设置一个定时器来解决这种问题。如果当定时器溢出时还没有收到确认,它就重传该数据。对任何实现而言,关键之处就在于超时和重传的策略,即怎样决定超时间隔和如何确定重传的频率。 对每个连接, TCP管理4个不同的定时器:1、重传定时器使用于当希望收到另一端的...原创 2018-04-16 23:47:41 · 4695 阅读 · 2 评论