前言 编程是对现实世界的模拟,网络通信自然也是对现实世界通信的模拟.可以将网络通信中使用的各种API和对现实世界中的各种通信设备进行通讯的操作进行对比以加深理解. 对比 socket() 函数 vs 申请一台电话机 bind() 函数 vs 获取并声明自己的电话号码 listen() 函数 vs 打开响铃 connect() 函数 vs 呼叫对方( 需输入对方电话号码 ) accept() 函数 vs 接电话( 会收到呼叫方的电话号码 ) 说明 对于accept() 函数,它只有在建立连接之后才…
前言 编程是对现实世界的模拟,网络通信自然也是对现实世界通信的模拟.可以将网络通信中使用的各种API和对现实世界中的各种通信设备进行通讯的操作进行对比以加深理解. 对比 socket() 函数 vs 申请一台电话机 bind() 函数 vs 获取并声明自己的电话号码 listen() 函数 vs 打开响铃 connect() 函数 vs 呼叫对方( 需输入对方电话号码 ) accept() 函数 vs 接电话( 会收到呼叫方的电话号码 ) 说明 对于accept() 函数,它只有在建立连接之后才…
今天(恰巧是今天)看到有人在 SegmentFault 上问「TCP server 为什么一个端口可以建立多个连接?」.提问者认为 client 端就不能使用相同的本地端口了.理论上来说,确定一条链路,只要五元组(源IP.源端口号.目标IP.目标端口号.协议)唯一就可以了,所以这不应该是技术限制.而实际上,Linux 3.9 之后确实可以让客户端使用相同的地址来连接不同的目标,只不过要提前跟内核说好而已. 当然,你不能使用同一个 socket,不然调用connect连接的时候会报错:   1 […
更新:后来升级至 .NET Core 2.2 Preview 3 ,并将 System.Net.Http 升级至 4.3.4 之后没出现这个问题,问题与 https://github.com/dotnet/corefx/pull/32568 有关. 以下内容是当时的错误判断. 今天上午的故障之后,我们 review 了代码,通过压力测试重现问题,分析验证,最终找到了问题的真正原因 -- 在 ASP.NET Core 程序中调用 async 方法时没加 await . public async T…
在虚拟机上安装完Centos系统后,开始配置静态IP,以方便在本宿主机上可以访问虚拟机,在曲折的配置中,了解到虚拟机还有三种连接方式:Bridged,NAT和Host-only,于是,我又一轮新的各种百度,各种查询,最后得出了比较好理解的总结,也感谢博客园,让我这个刚刚入门的新生学到了很多知识:  一.虚拟网络三种连接方式 当在VMware虚拟机中将CentOS安装成功后,会在win10系统中模拟出两个虚拟网卡:(以太网2中)VMnet1和(以太网3中)VMnet8,通过点击“控制面板--->查…
1 本文介绍一个hello world输出的例子. ice应用的步骤如下: 1. 编写 Slice 定义并编译它. 2. 编写服务器并编译它. 3. 编写客户并编译它. 基本框架图示: 本文代码图示: 需要注意的概念: servant   servant其实是服务端实质的动作代码.一个servant 提供一个或多个Ice 对象的实质内容.实际上,servant 就是服务器开发者编写的类的实例, 对象适配器      是对象(或者说是servant)的代理.(1)包含端点地址和对象.适配器和端点地…
一.服务端 1.创建套接字: int socket(int domain, int type, int protocol); domain:指定协议族,通常选用AF_INET. type:指定socket类型,TCP通信下使用SOCK_STREAM. protocol:指定协议,通常为0. 返回值:成功则返回新socket的文件描述符,失败返回-1. 头文件:sys/socket.h     sys/types.h 2.绑定套接字 int bind(int sockfd, struct sock…
本文由原作者松若章原创发布,作者主页:zhihu.com/people/hrsonion/posts,感谢原作者的无私分享. 1.引言 一道经典的面试题是:从 URL 在浏览器被被输入到页面展现的过程中发生了什么? 大多数回答都是说请求响应之后 DOM 怎么被构建,被绘制出来.但是你有没有想过,收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式.什么顺序.建立了多少连接.使用什么协议被下载下来的呢? 要搞懂这个问题,我们需要先解决下面五个问题: 1)现代浏览器在与服务器建立了一个 T…
曾经有这么一道经典面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式.什么顺序.建立了多少连接.使用什么协议被下载下来的呢 要搞懂这个问题,我们需要先解决下面五个问题: 现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?什么情况下会断开? 一个 TCP 连接可以对应几个 HTTP 请求? 一个 TCP 连接中 HTTP 请求发送可以…
作者:松若章 https://zhuanlan.zhihu.com/p/61423830 一道经典的面试题是从 URL 在浏览器被被输入到页面展现的过程中发生了什么,大多数回答都是说请求响应之后 DOM 怎么被构建,被绘制出来. 但是你有没有想过,收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式.什么顺序.建立了多少连接.使用什么协议被下载下来的呢? 要搞懂这个问题,我们需要先解决下面五个问题: 现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?…