88-非阻塞 connect 版本的 web 客户程序
1.web客户程序目标:1)web客户程序建立与某个web服务器的HTTP连接,然后获取主页(这只是一个开胃菜,测试我们的web程序是否正常工作)。2)同时请求多个网络资源,并下载。(看起来很像多线程爬虫,但是我们不使用多线程,而是非阻塞c...
1.web客户程序目标:1)web客户程序建立与某个web服务器的HTTP连接,然后获取主页(这只是一个开胃菜,测试我们的web程序是否正常工作)。2)同时请求多个网络资源,并下载。(看起来很像多线程爬虫,但是我们不使用多线程,而是非阻塞c...
本文我们需要用到一种新的类型的套接字——RawSockets,原始套接字。如此重要的知识点,没有出现在大标题中,实在很抱歉。它出现的理由很简单,我们可以自己构造一个完整的IP数据报,通过原始套接字发送出去。也可以从原始套接字中读取一个完整的...
本章开始讲解ICMP协议,通过学习ICMP协议,我们可以顺便掌握RawSockets,中译名为原始套接字。在学习ICMP前,还需要简单的了解一下IP协议。IP协议是TCP/IP协议族中最核心的协议,TCP、UDP、ICMP等众多协议需要依赖...
ICMP协议(InternetControlMessagesProtocol,网际控制报文协议)是网络层最重要的协议之一。前面的实验我们也看到了,它由IP协议承载,封装在IP协议的数据部分。图1ICMP被封装在IP数据报的数据部分1.ICM...
学完了ICMP回显请求与应答报文,就可以用它来实现我们平时使用的PING命令了。先来看看效果:图1自带的ping命令与我们自己实现的1.程序路径本文使用的程序托管在gitos上:http://git.oschina.net/ivan_all...
当ICMP首部type=8,code=0,该ICMP是回显请求报文。当type=0,code=0时,是回显应答报文。1.回显请求与应答报文1.1首部格式图1ICMP回显请求与应答报文首部当ICMP报文是回显请求与应答报文时,我们可以看到首部...
ICMP端口不可达是差错报文中的一种,它的类型(type)是3,代码(code)也是3.1.差错报文首部格式图1差错报文首部2.实验打开我们之前写的ICMP报文接收程序程序托管在gitos上:http://git.oschina.net/i...
ICMP时间戳请求允许系统向另一个系统查询当前的时间。1.ICMP时间戳1.1首部格式图1ICMP时间戳请求与应答报文它的type字段为17(请求)或18(应答),code字段为0.发起时间戳:发送者的发送时间,由发送者填写接收时间戳:接收...
很久以前我们非常简单的讨论过《IPv4地址》,那时候是出于网络编程基础的需要,介绍了和IP地址相关的函数。这一次,我们来详细的讨论下IP地址的结构。1.IPv4地址分类1981年,标准就制定了一种基本的编址方法。32位的IP地址由{neti...
traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由,该程序最早由VanJacobson实现。当然我们不可能原汁原味的模仿一遍traceroute程序,在这里,我们只需要把最关键的功能实现出来就算完成任务。1...
之前说过,子网广播地址格式为{subnetid,-1}。这里用-1表示主机位为全1.我们将用三个实验来观察现象。1.实验一1.1网络拓扑图图1网络拓扑1.2实验步骤在主机PC1上ping广播地址192.168.1.255,并在主机PC1上抓...
讲了好几篇有关广播的理论,是时候实践一下了。这一次,需要将之前写的udp回射服务器和客户端拿过来,稍作修改。你可以直接去unp/program/template这个模板文件夹下面把udp的代码拿过来改。本文使用的程序工具托管在gitos上:...