网络
文章平均质量分 79
Ther Meng
这个作者很懒,什么都没留下…
展开
-
WebSocket协议源码文档分析七
WebSocket Protocol Stack in chrome/net目的我们想提出在chrome / net中添加WebSocket网络堆栈以实现以下两个目标:在代理解析,代理身份验证,建立SSL连接和HTTP事务等领域,删除SocketStream和其他net /代码的重复代码。准备通过SPDY实现WebSocket多重扩展和WebSocket。本文档重点介绍chrome / net下的类的设计。背景当前设计当前,WebSocket协议栈基本上位于WebCore的WebSock原创 2020-12-08 15:43:45 · 425 阅读 · 0 评论 -
WebSocket协议源码文档分析六
Per-renderer WebSocket throttling每个渲染器WebSocket节流目的防止行为不当的Javascript导致浏览器占用所有可用内存。使WebSocket作为执行端口扫描的方法的吸引力降低。背景与HTTP不同,WebSocket协议具有内置的DoS保护,其形式为一次仅允许每个ip:port进行一次握手。这使得浏览器中对DoS保护的需求不那么明显。但是,如果浏览器接受来自渲染器的无限制WebSocket请求,它将用尽所有CPU和内存来处理这些请求。原则上,WebSo原创 2020-12-08 15:27:49 · 642 阅读 · 0 评论 -
WebSocket协议源码文档分析五
WebSocket HTTP Auth Design目的支持WebSocket握手的HTTP身份验证。背景自从黎明起,HTTP协议就使用401“未经授权”状态代码,WWW-Authenticate响应标头和授权请求标头支持认证机制。由于安全性差,缺乏标准的会话超时和注销功能以及不良的UI体验,此机制尚未在公共Internet站点上广泛使用。但是,由于易于实现,它被广泛用于路由器等家庭网络设备以及某些公司环境中。共有三种类型:“基本”-用户名和密码以混淆的纯文本格式发送“摘要”-密码以随机数原创 2020-12-08 15:19:42 · 259 阅读 · 0 评论 -
WebSocket协议源码文档分析四
WebSocket + Network Service + WebRequest API本文档介绍了在启用网络服务的情况下如何在WebSocket上支持WebRequest API。当前状态WebSocket + WebRequest API(无网络服务)禁用网络服务后,我们将(child_id,render_frame_id)附加到content :: WebSocketManager中的net :: URLRequest。 附件中的信息在extensions :: WebRequest :: W原创 2020-12-08 15:07:04 · 270 阅读 · 0 评论 -
WebSocket协议源码文档分析三
WebSockets over HTTP/2 Chromium Design Document一页概述概要根据规范,在Chromium中通过HTTP / 2实现对WebSockets的支持,请参阅https://tools.ietf.org/html/draft-ietf-httpbis-h2-websockets-07上的最新草案。仅当服务器已经通过规范中定义的HTTP / 2 SETTINGS参数通过HTTP / 2公布了对WebSockets的支持时,这仅用于安全的WebSockets请求。在其原创 2020-12-08 14:40:20 · 193 阅读 · 0 评论 -
WebSocket协议源码文档分析二
WebSocket节流设计目的在net /中为新的WebSocket堆栈实现符合RFC6455的限制。通过SPDY或HTTP / 2传输进行多路复用的WebSocket在本文档的范围之外(通过SPDY代理隧道传输的WebSocket除外,从WebSocket的角度来看,这只是一个普通的代理)。背景新的WebSocket堆栈重新使用HTTP堆栈进行握手。不幸的是,HTTP和WebSockets之间的连接限制语义不同:对于HTTP,浏览器将自身限制为每对(主机名,端口)对6个连接。对于WebSoc原创 2020-12-08 14:26:40 · 269 阅读 · 0 评论 -
WebSocket协议源码文档分析一
WebSocketBasicHandshakeStream目的将用于处理WebSocket HTTP升级握手和其余WebSocket协议的代码尽可能合理地分开。只需最少的更改,即可将Chrome的现有HTTP实现重用于握手。背景WebSocket连接包含两个不同的阶段:握手(使用HTTP语义并借用HTTP机制进行身份验证和cookie)以及WebSocket协议本身(作为双向TCP / IP薄层的二进制或文本消息流)。Chrome中WebSockets的出厂实现基于Blink内部完整协议的实现,原创 2020-12-08 14:09:20 · 375 阅读 · 0 评论 -
文件描述符就绪的条件(可读可写)
下列情况下,socket可读:1.socket内核接收缓冲区中的字节数大于或者单人公寓其低水位的标记SO_RCVLOWAT标记。此时,我们可以无阻塞的该socket,并且读操作的返回值大于0;2.socket通信的对方关闭连接,此时对该socket的读操作将返回0;3.监听socket上有新的连接请求;4.socket上有未处理的错误。此时我们可以使用getsockopt来读取和清除错误...原创 2020-02-18 15:02:53 · 1294 阅读 · 0 评论 -
最大文件描述符/内核参数
ulimit -a :查看用户级文件描述符限制ulimit -SHn max-file-number:将用户级文件描述符设定为最大(临时)永久修改用户文件描述符限制,可以在/etx/security/limits.conf文件中加入:* hard nofile max-file-number* soft nofile max-file-number永久的修改系统级文件描述符限制,则需...原创 2020-03-07 15:23:30 · 354 阅读 · 0 评论 -
理解Linux backlog/somaxconn内核参数
TCP SYN_REVD, ESTABELLISHED 状态对应的队列TCP 建立连接时要经过 3 次握手,在客户端向服务器发起连接时,对于服务器而言,一个完整的连接建立过程,服务器会经历 2 种 TCP 状态:SYN_REVD, ESTABELLISHED。对应也会维护两个队列:一个存放 SYN 的队列(半连接队列)一个存放已经完成连接的队列(全连接队列)当一个连接的状态是 SY...原创 2020-03-05 14:37:56 · 617 阅读 · 0 评论 -
bind函数重难点分析
struct sockaddr_in bindaddr;bindaddr.sin_family = AF_INET;bindaddr.sin_addr.s_addr = htonl(INADDR_ANY);bindaddr.sin_port = htons(3000);if (bind(listenfd, (struct sockaddr *)&bindaddr, sizeof(b...原创 2020-03-05 13:58:47 · 320 阅读 · 0 评论 -
非阻塞connect(异步connnect)
在 socket 是阻塞模式下 connect 函数会一直到有明确的结果才会返回(或连接成功或连接失败),如果服务器地址“较远”,连接速度比较慢,connect 函数在连接过程中可能会导致程序阻塞在 connect 函数处好一会儿(如两三秒之久),虽然这一般也不会对依赖于网络通信的程序造成什么影响,但在实际项目中,我们一般倾向使用所谓的异步的 connect 技术,或者叫非阻塞的 connect。...原创 2020-03-04 13:47:01 · 1606 阅读 · 0 评论 -
瑞士军刀般的nc
nc 即 netcat 命令,这个工具在排查网络故障时非常有用,功能非常强大,因而被业绩称为网络界的“瑞士军刀”,默认系统是没有这个命令的,你需要安装一下,安装方法:yum install ncnc 命令常见的用法是模拟一个服务器程序被其他客户端连接,或者模拟一个客户端连接其他服务器,连接之后就可以进行数据收发。我们来逐一介绍一下:模拟一个服务器程序使用 -l 选项(单词 listen ...原创 2020-02-27 21:53:27 · 170 阅读 · 0 评论 -
netstat命令
无论是 Windows 和 Linux 都提供了 netstat 命令,这个命令是我们使用的较多的查看网络连接状态的命令。这里以 Linux 系统为例,其常见选项有:-a (all)显示所有选项,netstat 默认不显示 LISTEN 相关。-t (tcp)仅显示 tcp 相关选项-u (udp)仅显示 udp 相关选项-n 不显示别名,能显示数字的全部转化成数字-l 仅列出有在 Li...原创 2020-02-27 21:21:36 · 370 阅读 · 0 评论 -
ping命令
ping 命令是我们最常用的命令之一,一般用于侦测本机到目标主机的网络是否通畅。其使用方法是:ping ip地址使用方法如下:[root@localhost ~]# ping 120.55.94.78PING 120.55.94.78 (120.55.94.78) 56(84) bytes of data.64 bytes from 120.55.94.78: icmp_seq=1 t...原创 2020-02-27 20:38:24 · 937 阅读 · 0 评论 -
TCP连接超时
如果客户端访问一个距离它很远的服务器,后者由于网络繁忙,导致服务器对于客户端发出的同步报文段没有应答,此时客户端程序必然先进行重连,如果重连多次仍然无效,则通知应用程序连接超时结论:TCP连接超时的时间为63秒在上述情况下,如果客户端第一次发送的同步报文段服务器没有接收到,客户端会进行重传5次,这五次的重传时间间隔分别为2s,4s,8s,16s,32s,加上第一次的1s,一共63s,在这五次均...原创 2020-02-12 19:46:46 · 5394 阅读 · 0 评论 -
ifconfig常用命令
ifconfig 是我们最常用的查看当前系统的网卡和 ip 地址信息的命令。如果你的机器上还没安装 ifconfig 命令,可以使用如下命令安装:yum install net-tools安装成功以后,我们就可以使用 ifconfig 查看机器网卡信息了:[root@localhost ~]# ifconfigens33: flags=4163<UP,BROADCAST,RUNNI...原创 2020-02-26 22:15:56 · 1548 阅读 · 0 评论 -
tcpdump常用命令
tcpdump 是 Linux 系统提供的一个非常强大的抓包工具,熟练使用它,对我们排查网络问题非常有用。如果你的机器上还没有安装,可以使用如下命令安装:yum install tcpdump如果要使用 tcpdump 命令必须具有 sudo 权限。tcpdump 常用的选项有:-i 指定要捕获的目标网卡名,网卡名可以使用前面章节中介绍的 ifconfig 命令获得;如果要抓所有网卡的上...原创 2020-02-26 21:54:07 · 1381 阅读 · 0 评论 -
I/O复用(select,poll,epoll)的用法以及区别
select API#include <sys/select.h>int select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,struct timeval *timeout);#include <sys/select.h>FD_ZERO(fd_set *fdset);FD_SET(...原创 2020-02-19 16:31:44 · 157 阅读 · 0 评论