TCP/IP协议解析
我是流氓我怕谁啊
未曾清贫难成人
不经打击老天真
自古英雄出炼狱
从来富贵入凡尘!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
为什么 TCP 协议有性能问题
TCP 协议可以说是今天互联网的基石,作为可靠的传输协议,在今天几乎所有的数据都会通过 TCP 协议传输,然而 TCP 在设计之初没有考虑到现今复杂的网络环境,当你在地铁上或者火车上被断断续续的网络折磨时,你可能都不知道这一切可能都是 TCP 协议造成的。本文会分析 TCP 协议为什么在弱网环境下有严重的性能问题。底层的数据传输协议在设计时必须要对带宽的利用率和通信延迟进行权衡和取舍,所以想要解决实际生产中的全部问题是不可能的,TCP 选择了充分利用带宽,为流量而设计,期望在尽可能短的时间内传输更多的数原创 2020-10-24 16:19:24 · 1805 阅读 · 0 评论 -
IO多路复用之epoll函数详解
epoll 在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。 相对于select和poll来说,epoll更加灵活,...转载 2018-11-16 17:53:48 · 446 阅读 · 0 评论 -
select,poll,epoll优缺点及比较
select优点1)select()的可移植性更好,在某些Unix系统上不支持poll() 2)select() 对于超时值提供了更好的精度:微秒,而poll是毫秒。select缺点1) 单个进程可监视的fd数量被限制。 2) 需要维护一个用来存放大量fd的数据结构,这样会使得用户空间和内核空间在传递该结构时复制开销大。 3) 对fd进行扫描时是线性扫描。fd剧增后,IO...转载 2018-11-16 18:05:11 · 1270 阅读 · 0 评论 -
TCP/IP详解--nagle算法和TCP_NODELAY
在客户端一直给服务器发送小数据的时候,接受到一个回应会在很长的时间以后,但是将多个小数据写操作合并成一个写操作,问题就没了。这个事件的缘由可能是TCP_NODELAY的原因现在大概明白,是由于nagle算法在捣乱。TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据...原创 2018-11-19 15:56:09 · 635 阅读 · 0 评论 -
TCP/IP详解--五层协议的作用以及对应的设备
网络协议分层: 链路层:有时也称作链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。他们一起处理与电缆的物理接口细节。 网络层:有时也称为互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议簇中,网络层协议包括IP协议,ICMP协议(Internet互联网控制报文协议)、以及IGMP协议(Internet组管理协议)(ps:分片是在网络...原创 2018-11-19 17:00:53 · 5372 阅读 · 0 评论 -
TCP三次握手和四次分手初探
1.socket中TCP的三次握手建立连接详解我们知道tcp建立连接要进行“三次握手”,即交换三个分组。大致流程如下:客户端向服务器发送一个SYN J 服务器向客户端响应一个SYN K,并对SYN J进行确认ACK J+1 客户端再想服务器发一个确认ACK K+1只有就完了三次握手,但是这个三次握手发生在socket的那几个函数中呢?请看下图:从图中可以看出,当客户端调...原创 2018-11-26 16:40:47 · 211 阅读 · 0 评论 -
TCP/IP详解--TCP连接中TIME_WAIT状态过多
TIMEWAIT状态本身和应用层的客户端或者服务器是没有关系的。仅仅是主动关闭的一方,在使用FIN|ACK|FIN|ACK四分组正常关闭TCP连接的时候会出现这个TIMEWAIT。服务器在处理客户端请求的时候,如果你的程序设计为服务器主动关闭,那么你才有可能需要关注这个TIMEWAIT状态过多的问题。如果你的服务器设计为被动关闭,那么你首先要关注的是CLOSE_WAIT。原则TIMEWAI...转载 2018-12-03 16:00:20 · 408 阅读 · 0 评论 -
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协议中特有...转载 2018-12-03 16:03:10 · 1291 阅读 · 0 评论 -
TCP/IP详解--网络层 && IP首部格式
IP是TCP/IP协议簇中最为核心的协议。所有的TCP、UDP、ICMP以及IGMP数据都是以IP数据报的格式传输。IP提供不可靠、无连接的数据报传送符文。 不可靠的意思是它不能保证IP数据报能成功地到达目的地。IP仅提供尽力而为的传输符文。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP的处理办法就是丢弃,居然后发送ICMP消息报给信源端,任何要求的可靠性必须由上层提...转载 2018-12-03 16:22:05 · 1137 阅读 · 0 评论 -
TCP层的分段和IP层的分片之间的关系 & MTU和MSS之间的关系
首先说明:数据报的分段和分片确实发生,分段发生在传输层,分片发生在网络层。但是对于分段来说,这是经常发生在UDP传输层协议上的情况,对于传输层使用TCP协议的通道来说,这种事情很少发生。1,MTU(Maximum Transmission Unit,MTU),最大传输单元(1)以太网和802.3对数据帧的长度都有一个限制,其最大 值分别是1500和1492个字节。链路层的这个特性称作MTU...转载 2018-12-03 17:03:46 · 402 阅读 · 0 评论 -
一种基于收看直播数据分发乱序丢包处理方法
最近接到一个关于收看直播数据包乱序处理任务,服务端会一直在轮询发送直播的数据(也可以是升级包数据),附带有包序号和总包数以及每包的长度,各个终端接收直播数据,直到数据全部接收完为止;一般领导安排任务的时候都是三两句话的功夫,程序员可能就需要两三天来实现这个需求,排除大神之外,我们都是再普通不过的程序员了。组长给了一点建议:收看直播在实际场景真正用的时候,下载的文件大小可能很大,然后可能还有...原创 2018-12-21 15:50:11 · 879 阅读 · 0 评论 -
TCP/IP详解--数据链路层 & 以太网帧格式
链路层上最常见的封装就是以太网和IEEE 802封装,这里就使用以太网作为讲解的对象。一、概述 数据链路层属于计算机网络的底层,使用的信道主要有点对点信道和广播信道两种类型。 在TCP/IP协议族中,数据链路层主要有三个目的: 1)为IP模块发送和接收数据 2)为ARP模块发送ARP请求和接收ARP应答 3)为R...转载 2018-12-17 16:17:00 · 1682 阅读 · 0 评论
分享