
网络
爬电线杆的驴
一时瑜亮,一壶酒,浅斟酌,影婆娑......丈夫处世应将功名拓,岂抛年少任蹉跎......
展开
-
流式传输
1.面向连接的协议同时也是流式协议,无连接协议几乎都是基于消息的。面向消息的协议对数据边界有保护,发送函数的数据总是被整体地写到协议层。2.发送函数和接受函数都有自己设置的缓存。它们和协议内部设置的接收和发送缓存之间的关系就像生产者和消费者之间的关系。 这样就会出现因为协议层的写缓冲满了导致传输层的数据块无法全部写入。避免这一情况发生的做法是反复发送确保数据块已全部写到写缓存。至于协议层的写缓存在什么时候将数据发送到网络上是跟协议有关的。个人觉得可以采用定时发送策略,并根据网络情况设定时延和发送窗口大小。原创 2010-12-27 20:21:00 · 278 阅读 · 0 评论 -
Transfer-Encoding: chunked
有时候,Web服务器生成HTTP Response是无法在Header就确定消息大小的,这时一般来说服务器将不会提供Content-Length的头信息,而采用Chunked编码动态的提供body内容的长度。进行Chunked编码传输的HTTP Response会在消转载 2011-09-23 20:25:43 · 589 阅读 · 0 评论 -
wireshark 使用方法
Wireshark图解教程(简介、抓包、过滤器Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。与很多其他网络工具一样,Wireshark也使用pcap network library来进行封包捕捉。可破解局域网内QQ、邮箱、msn、账号等的密码!! wireshark的原名是Ethereal,新名字是2006年起用的。当时Ethereal的主要开发者决定离开他原来供职的公司,并继续开发这个软件。但由于Ethereal这个名称的使用转载 2011-05-30 14:04:00 · 3013 阅读 · 0 评论 -
用Socket类实现HTTP协议客户端应用
Http客户端程序已集成在Java语言中,可以通过URLConnection类调用。遗憾的 是,由于SUN没有公布Http客户程序的源码,它实现的细节仍是一个谜。本文根据HTTP 协议规范,用Java.net.Socket类实现一个HTTP协议客户端程序。 1.Socket类: 了解TCP/IP协议集通信的读者知道,协议间的通信是通过Socket完成的。在 Java.net包中,Socket类就是对Socket的具体实现。它通过连接到主机后,返回一个 I/O流,实现协议间的信息交换。 2 . HTTP协议转载 2011-02-23 18:59:00 · 439 阅读 · 0 评论 -
由getpeername引发的一个字节对齐问题
<br />struct sockaddr *sa;sa = Malloc(MAXSOCKADDR);len = MAXSOCKADDR; Getpeername(sockfd, sa, &len);//sockfd是一个已连接套接字(tcp) 此函数用来获取连接另一端的协议地址<br />注意:这里我们用malloc ,而不是一开始就定义 char sockaddr[MAXSOCKADDR]然后按照协议作类型强转<br />。是因为malloc 总是返回一个系统所要求的严格对齐原创 2011-02-17 17:20:00 · 739 阅读 · 0 评论 -
UDP套接口缓冲区
在UDP套接口排队的UDP数据报数目受限于UDP套接口缓冲区的大小。我们可以用SO_RECVBUF套接口选项改变此值。在BSD/OS下UDP套接口缓冲区的大小默认是41600字节,即29个1400字节的数据报。最大缺省值为256*1024字节。增大套接口缓冲区大小不是减小数据报丢失的根本办法,最主要的好是要确保接收速度比发送速度快。原创 2011-02-16 19:29:00 · 2124 阅读 · 0 评论 -
未连接UDP套接口 和 已连接UDP套接口
<br />UDP 的connect 函数:<br />我们可以给UDP套接口调用connect,但是这样做的结果和TCP不同:没有三路握手的过程。内核只是记录对方的IP地址和端口号,它们包含在传递给connect的套接口地址结构中。<br />对于已连接套接口,与缺省的未连接套接相比,发生了三个变化:<br />1. 不能够再给输出操作指定目的IP地址和端口号。也就是说不能够在使用sendto,只能用write或send。写到udp套接口上的任何东西都自动发送到由connect指定的协议地址。<br />原创 2011-02-16 16:49:00 · 1204 阅读 · 2 评论 -
tcp read 和 udp recvfrom
udp中写一个长度为0的数据报是可行的,这导致一个包含IP头部、udp头部和没有数据的IP数据报。这也意味着对于数据报协议,recvfrom返回0值也是可行的:它不表示对方已经关闭了连接,这与tcp套接口上read返回0值的情况不同。由于udp是无连接的这就没有诸如关闭连接之类的事情。原创 2011-02-15 14:33:00 · 1923 阅读 · 0 评论 -
IP TCP UDP ICMP IGMP检验和的计算方法
<br />IP TCP UDP ICMP IGMP检验和的计算方法<br />为了计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16bit进<br />行二进制反码求和(整个首部看成是由一串16bit的字组成),结果存在检验和字段中。<br />当收到一份IP数据报后,同样首部中每个16bit进行反码求和。由于接收方在计算过程中<br />包含了发送方存在首部中的检验和,因为如果首部在传输过程中没有发生任何差错,那么<br />接收方计算的结果应该为全1。如果结果不是1(即检验和错转载 2011-01-11 11:01:00 · 817 阅读 · 0 评论 -
几种I/O模型的简单嘀咕
<br />1 select模型<br />利用select函数我们判断套接字上是否有数据,或者能不能向一个套接字写入数据,之所以采用这个函数是为了防止应用在I/O过程中(例如:send或Recv)被迫进入锁定状态。<br />例如 我们想测试一个套接字上是否有数据可读,可将其加入readfds集合,再等待select函数完成,select完成后必须判读自己的套接字是否认为readfds集合的一部分。在readfds、writefds、exceptfds中任何两个可以是NULL,但至少有一个不为空。在不为空原创 2010-12-30 21:02:00 · 310 阅读 · 0 评论 -
WSAEventselect 模型的一个多线程示例
最近看了一下winSock的I/O模型发现作者为了方便我们理解采用的基本上是单线程的处理方式。 于是乎抽点时间写了WSAEventselect的多线程服务器例程。未及大批量的客户机测试难免有疏漏之处前见谅!另外除非特别重要的地方加了注释之外,其他地方没有注释,想看的可要花点心思了,真是不好意思~WSAEventselect多线程示例只是提供给我们一种在网络多线程处理时的一种操作方法,难点还是多线程对共享资源的访问,以及基于此如何优化我们的程序。#include #include #include原创 2010-12-30 21:12:00 · 737 阅读 · 0 评论 -
HTTP支持断点续传
要实现Http断点续传,web服务器必须支持Http/1.1(协议版本是RFC2068)具体如下: 在HTTP请求的头部信息里面,通常是这样的: GET http://bbs.netbuddy.org/index.html HTTP/1.1 Host:bbs.netbuddy.orgAccept:*/* 上面是HTTP请求头的主要内容,是浏览器等客户端发给HTT转载 2012-02-15 14:11:33 · 5016 阅读 · 0 评论