网络通信
文章平均质量分 94
kph_Hajash
三年服务端(直播推拉流)经验、三年客户端(网络库基础组件)经验
展开
-
I/O 多路复用使用背景梳理
1. 问题背景描述在终端使用 telnet 命令连接到一个 TCP server,假设 server 会返回你在终端输入的内容。那么现在终端的这个 telnet 进程,会从两个文件描述符读取内容,一个是标准输入,一个是网络连接(server 返回的数据)。来看看读取文件描述符内容的 API。...原创 2019-12-15 17:36:57 · 178 阅读 · 0 评论 -
编译 cronet 静态库—— ios 版本
cronet 是 Chromium 用于移动端的网络库,提供了 Java 和 OC 的 API,支持 HTTP/HTTPS/QUIC/SPDY 等协议。本文主要参考此文献1、依赖1.1 depot_tools通过下面指令安装 depot_tools,该依赖项包含了后续的 fetch 等命令。 git clone https://chromium.googlesource.com/chro...原创 2019-06-11 14:11:06 · 2396 阅读 · 0 评论 -
网络分层模型概念梳理
一、简介网络分层模型主要有两大类,一种是偏学术性的:OSI 七层网络模型;一种是偏应用性的:TCP/IP 网络模型,其又分为四层模型和五层模型。1、这两大类网络分层模型的区别?OSI 七层模型是学术界提出的,从层数上就知道它更把网络分的更加详实,从而也使得它的实现更加复杂,因此它的学术价值更大。而 TCP/IP 网络模型是由计算机寡头提出并实现,并且属于开源产品,是的更能直接提供给用户使用...原创 2019-06-02 13:27:32 · 1427 阅读 · 0 评论 -
详解 gQUIC 加密握手算法(quic-crypto)中共享密钥的生成过程
1、基本概要QUIC 传输的数据几乎都是要加密的,关于加密算法这里不做介绍,加密必然需要用到密钥;QUIC 中的加密密钥有两个 initial key 和 forword-secure key。前者用于实现 0-RTT 的握手,后者则用于握手成功以后整个会话的数据加密;QUIC 的密钥使用 Diffe-Hellman 算法生成;2、解析Diffe-Hellman 算法的密钥生成过...原创 2019-12-17 23:14:21 · 7997 阅读 · 4 评论 -
用大白话解释 TCP 的可靠性
我们一般用靠得住、靠谱形容一个人做事总让人放心。类似的, TCP 在传输数据时也总是让人放心的,我们称这一特点为可靠性。我们只管告诉 TCP 需要传送什么数据、传送多少(send),那么 TCP 就会尽它所能的保证这些数据不错传、不漏传(TCP 协议)。一旦超出它的能力范围了,比如网络状况太差、对端不在线等,它会及时告诉你这是在完成不了(返回错误),不至于让你白等一场。如果你是老板,知...原创 2018-12-19 15:36:47 · 318 阅读 · 0 评论 -
网络通信中 TCP 产生 RST 的三个条件分析
RST 是 TCP 发生错误时发送的一种 TCP 分节( segment:传输层的 PDU ),可用来异常的关闭一个连接,此时客户端会返回一个 ECONNREFUSED 错误。 它会在以下三种情况下产生:目的地为某个端口的 SYN 到达服务器,但并没有服务器在该端口监听。TCP 想取消一个已有连接,即异常地关闭连接。TCP 接收到一个根本不存在的连接上的分节。第一种情况可能有如下...原创 2018-06-16 17:43:41 · 5472 阅读 · 0 评论 -
非对称加密算法 RSA 与 ECC
RSA 属于公钥密码系统,反向使用公钥密码系统便提供了数字签名的功能,RSA 的安全性较高,但是随之而来的计算量也较大(例如指数运算),且会随着规模的增加而增大。RSA 初始化阶段需要找到两个大素数,p 和 q;其乘积 n = p * q 被称作模。n 的欧拉数为 ϕ(n)=(p−1)∗(q−1)ϕ(n)=(p−1)∗(q−1)\phi(n) = (p-1)*(q-1),根据数论的知识,欧拉...原创 2018-06-09 13:07:45 · 2621 阅读 · 0 评论 -
网络信息传输的安全机制
在不安全的信道上传输信息,会有哪些安全威胁:试图颠覆已有过程来运行其他不应该执行的代码,比如蠕虫,利用缓冲区溢出的漏洞改写服务器代码来执行注入的蠕虫代码;试图获得用户权限来运行恶意程序 ;采用未经授权的方法使用兼容的网络协议。在不可控的网络中会出现各种可能的攻击,有如下分类:主动攻击【较难被防御】:篡改信息(破坏完整性),拒绝服务(破坏可用性)被动攻击【较难被发现】:监视或...原创 2018-06-08 21:14:21 · 5686 阅读 · 0 评论 -
TCP 和 UDP 的区别
TCP 和 UDP 是传输层最主要的通信协议。 TCP 协议更复杂更安全,属于面向连接的协议,其对应的代价就是时延较高;其应用场景更多的是服务于应用层协议,比如 HTTP、SMTP、 QQ 文件传输等。 而 UDP 是无连接的协议,通信之前无需建立连接,因此实时性高,其对应的代价就是数据丢失概率受网络拥堵状况的影响较高,比较适用于视频会议、QQ 语音、 QQ 视频等实时性要求高的场景。参考...原创 2018-06-07 23:07:54 · 188 阅读 · 0 评论 -
DNS 劫持及解决方案之 HTTPDNS
1. 为什么会有 DNSDNS 即域名系统(Domain Name Server),其主要用于将域名解析为对应的 IP 地址。 那么为什么会有域名到 IP 地址的解析这一需要呢?就需要从人的角度和计算机的角度去分析了。人的角度:网络上的主机一般是通过 IP 地址唯一确定,但 IP 不便于人们记忆,如果每个人都需要通过 IP 来访问其他主机,那记忆量太大了,因此才借用域名来间接地标识一台...原创 2018-06-07 21:09:15 · 8125 阅读 · 1 评论 -
套接字地址结构为什么分 IPv4 IPv6 通用三种?
在套接字编程中, 一个网络连接的两端是通过套接字标识的, 而套接字的内容包括通信两端主机的 IP 地址和端口号、协议族等填充。比如 IPv4 的套接字地址结构:struct sockaddr_in{ uint8_t sin_len; // length of structure sa_family_t sin_family; // AF_INET in_po...原创 2018-06-13 22:23:11 · 1401 阅读 · 0 评论 -
网络编程中为什么使用“值-结果”参数
首先了解什么是“值-结果”参数,假设有如下代码struct sockaddr_un cli;int len;len = sizeof(cli);// unixfd 和 SA 在此不需要注意getpeername(unixfd, (SA *)&cli, &len); getpeername 声明:int sockfd, struct sockaddr *addr...原创 2018-06-13 15:35:32 · 1366 阅读 · 2 评论 -
TCP 终止连接的 TIME_WAIT 状态的存在性分析
TCP 的终止过程也就是常说的四次挥手,以下假设基于 A 主动断连:Fin1 :A————> B, A 发送 Fin1 包告诉 B 我要关闭连接了,没有数据要来了。Ack1:B————> A,B 收到 Fin1 包后发送 Ack1,告诉 A,我知道了。 若此时 B 端的发送缓冲区还有数据,则继续发送直到为空。接着,Fin2:B————> A, B 告诉 A 我数据也发...原创 2018-06-12 18:18:26 · 247 阅读 · 0 评论 -
为什么没收到对端 MSS 选项,TCP 就采用 536 这个 MSS 值?
在网络分层体系中,每一层处理的数据单元统一称为 PDU(协议数据单元),具体到某些层分别为: 层 概念 运输层:TCP 节:Segment 网络层:IP IP 数据报 链路层:DLL 帧:FrameMSS:Max Segment Size,最大分节大小,不包括 TCP 首部大小,这是运输层协议的一个选项,表示发送 SYN 的 TCP ...原创 2018-06-12 16:12:14 · 3204 阅读 · 0 评论