网络编程实战
从底层到实战,深度解析网络编程
盛延敏  前大众点评云平台首席架构师
专栏
已完结·共 40 讲
|
4.4w 人已学
|
收藏
端口号是一个 16 位的整数,最多为 65536。当一个客户端发起连接请求时,客户端的端口是由操作系统内核临时分配的,称为临时端口;然而,前面也提到过,服务器端的端口通常是一个众所周知的端口。
来自:02 | 网络编程模型:认识客户端-服务器网络模型的基本概念
13 人划过
只有发起连接终止的一方会进入 TIME_WAIT 状态
来自:10 | TIME_WAIT:隐藏在细节下的魔鬼
10 人划过
发送端通过调用 send 函数之后,数据流并没有马上通过网络传输出去,而是存储在套接字的发送缓冲区中,由网络协议栈决定何时发送、如何发送。当对应的数据发送给接收端,接收端回应 ACK,存储在发送缓冲区的这部分数据就可以删除了,但是,发送端并无法获取对应数据流的 ACK 情况,也就是说,发送端没有办法判断对端的接收方是否已经接收发送的数据流,如果需要知道这部分信息,就必须在应用层自己添加处理逻辑,例如显式的报文确认机制。
来自:17 | TCP并不总是“可靠”的?
10 人划过
非阻塞 I/O 可以使用在 read、write、accept、connect 等多种不同的场景,在非阻塞 I/O 下,使用轮询的方式引起 CPU 占用率高,所以一般将非阻塞 I/O 和 I/O 多路复用技术 select、poll 等搭配使用,在非阻塞 I/O 事件发生时,再调用对应事件的处理函数。这种方式,极大地提高了程序的健壮性和稳定性,是 Linux 下高性能网络编程的首选。
来自:22 | 非阻塞I/O:提升性能的加速器
10 人划过
第 17 行是每次测试完之后,重新设置待测试的描述符集合。你可以看到上面的例子,在 select 测试之前的数据是{0,3},select 测试之后就变成了{0}。
来自:20 | 大名⿍⿍的select:看我如何同时感知多个I/O事件
7 人划过
poll 不仅提供了默认的 level-triggered(条件触发)机制,还提供了性能更为强劲的 edge-triggered(边缘触发)机制。至于这两种机制的区别,我会在后面详细展开。
来自:23 | Linux利器:epoll的前世今生
5 人划过
后面两个参数 from 和 addrlen,实际上是返回对端发送方的地址和端口等信息
来自:06 | 嗨,别忘了UDP这个小兄弟
5 人划过
事件驱动模型,也被叫做反应堆模型(reactor),或者是 Event loop 模型
来自:27 | I/O多路复用遇上线程:使用poll单线程处理所有I/O事件
5 人划过
第一道,连接字队列的实现里,有一个重要情况没有考虑,就是队列里没有可用的位置了,想想看,如何对这种情况进行优化?
来自:26 | 使用阻塞I/O和线程模型:换一种轻量的方式
3 人划过
所以,UDP 客户端程序通过 connect 可以获得一定的性能提升。
来自:14丨UDP也可以是“已连接”?
3 人划过
*精彩内容为该课程各文章中划线次数最多的内容
免费试读
讲师

盛延敏

前大众点评云平台首席架构师

盛延敏,本科、博士皆就读于中科大,2000 年初就开始接触 ACE、CORBA 等网络编程技术,毕业后加入 IBM 从事 WebSphere 应用服务器开发和云平台 Bluemix 开发。后任大众点评云平台首席架构师,主持和推动了大众点评私有云平台的建设。目前在蚂蚁金服从事云计算领域的架构...查看更多
编辑推荐
包含这门课的学习路径

Go工程师

16门课程 89.9w人学习

后端工程师

27门课程 184.1w人学习

C++工程师

7门课程 51.5w人学习
看过的人还看了
数据结构与算法之美
王争
前 Google 工程师

81讲 | 283805 人已学习

¥68¥199
MySQL 实战 45 讲
林晓斌
网名丁奇,前腾讯云数据库负责人

49讲 | 224938 人已学习

¥68¥199
左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家

119讲 | 181001 人已学习

¥98¥399
趣谈网络协议
刘超
前网易研究院云计算技术部首席架构师

51讲 | 130453 人已学习

¥68¥199
趣谈 Linux 操作系统
刘超
前网易杭州研究院云计算技术部首席架构师

72讲 | 85481 人已学习

¥68¥199
从 0 开始学架构
李运华
网名“华仔”,前阿里资深技术专家(P9)

66讲 | 152624 人已学习

¥68¥199