主要内容:Socket发送函数在TCP层的实现 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 上一篇blog讲的是send().sendto().sendmsg()和sendmmsg()这些发送函数的系统调用和 Socket层实现,现在来看下它们的TCP层实现. TCP层实现 SOCK_STREAM类socket的TCP层操作函数集实例为tcp_prot,其中使用tcp_sendmsg()来发送数据. struct proto tcp_prot =…
主要内容:Socket发送函数在TCP层的实现 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 在上篇blog中分析了tcp_sendmsg()这个主要函数的实现,现在来看下之前略过的一些细节, 包括等待连接的建立.tcp_push()的实现.tcp_autocorking和数据的复制. 等待连接建立 在tcp_sendmsg()中如果发现连接尚未建立,会调用sk_stream_wait_connect()来等待连接的建立, 连接成功建立时返回0,之…
主要内容:从TCP层面判断发送缓存的申请是否合法,进程因缺少发送缓存而进行睡眠等待. 因为有发送缓存可写事件而被唤醒. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd TCP的发送缓存管理发生在两个层面上:单个Socket和整个TCP层. 上一篇blog讲述了单个Socket层面上的发送缓存管理,现在来看下整个TCP层面上的发送缓存管理. 从TCP层面判断发送缓存的申请是否合法 在申请发送缓存时,会调用sk_stream_memory_free()来…
主要内容:TCP发送缓存的初始化.动态调整.申请和释放. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 数据结构 TCP对发送缓存的管理是在两个层面上进行的,一个层面是单个socket的发送缓存管理, 另一个层面是整个TCP层的内存管理. 单个socket的发送缓存所涉及的变量. struct sock { ... /* 预分配缓存大小,是已经分配但尚未使用的部分 */ int sk_forward_alloc; ... /* 提交给IP层的发送数…
本文主要内容:tcp_ack()中的一些细节,如发送窗口的更新.持续定时器等. 内核版本:3.2.12 Author:zhangskd @ csdn 发送窗口的更新 什么时候需要更新发送窗口呢? (1)确认了新的数据 (2)条件1不成立,ACK段的序号是最新的. 这表示虽然ACK段没有确认了新的数据,但是它携带了新数据. (3)条件1和2都不成立,通告窗口变大. ACK既没有确认了新的数据,序号也不是最新的. 虽然如此,但是如果对端的接收窗口变大,我们还是要更新发送窗口. 此时ack_seq必须…
​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4005034.html [系列]Android系列之网络:(持续更新) Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据) Android系列之网络(二)----HTTP请求头与响应头 Android系列之网络(三)----使用HttpClie…
IPFS系列 多节点搭建 二 上一篇介绍了IPFS的分布式点对点超媒体传输协议的背景和安装介绍,本篇将继续指导搭建多节点的IPFS私有网络 文件服务.如果没还没开始搭建IPFS节点的小伙伴, 请戳此链接查看上篇文章介绍 : https://www.cnblogs.com/sumingk/articles/9250757.html 按照上一篇文章介绍,在搭建一个IPFS节点,本系列教程使用了 两个Ubuntu 16.04 服务器 + 一台win10主机搭建的三个ipfs节点. 一.IPFS 配置文…
前言这次来介绍下Spring Boot中对单元测试的整合使用,本篇会通过以下4点来介绍,基本满足日常需求 Service层单元测试 Controller层单元测试 新断言assertThat使用 单元测试的回滚 正文Spring Boot中引入单元测试很简单,依赖如下: 本篇实例Spring Boot版本为1.5.9.RELEASE,引入spring-boot-starter-test后,有如下几个库: • JUnit — The de-facto standard for unit testi…
1.简介 尽管有的小伙伴或者童鞋们觉得很简单,不就是关闭退出浏览器,但是宏哥还是把两个方法的区别说一下,不然遇到坑后根本不会想到是这里的问题. 2.源码 本文介绍webdriver中关于浏览器退出操作.driver中有两个方法是关于浏览器关闭,一个叫quit,一个叫close.先来看看看两者的声明描述,请看下面声明文档. /** * Close the current window, quitting the browser if it's the last window currently o…
简单的c# TCP通讯(TcpListener) C# 的TCP Socket (同步方式) C# 的TCP Socket (异步方式) C# 的tcp Socket设置自定义超时时间 C# TCP socket发送大数据包时,接收端和发送端数据不一致 服务端接收Receive不完全 在发送端,一次发送200k个字节,在接收端,一次接收200k个字节, 但是在接收端,经常会出现 socket.receive 接收不全的情况 , 偶尔接收的包也是正常的,用Wireshark抓包发现,每次发送都分成…