
TCP/IP与网络编程
文章平均质量分 53
iteye_16355
这个作者很懒,什么都没留下…
展开
-
HTTP客户请求的数据格式说明
HTTP客户请求的数据格式说明 HTTP请求包括三部分:请求行(Request Line),头部(Headers)和数据体(Body)。其中,请求行由请求方法(method),请求网址Request-URI和协议 (Protocol)构成,而请求头包括多个属性,数据体则可以被认为是附加在请求之后的文本或二进制文件。 下面这个例子显示了一个HTTP请求的Header内容,这些数据是真正以...原创 2008-12-27 18:51:10 · 148 阅读 · 0 评论 -
SO_RCVBUF选项的大小和接受窗口字节数关系
运行下面程序的同时打开任何一个抓包工具分析。实验表明Windows下面SO_RCVBUF选项的大小和接受窗口字节数无关。窗口大小都是8192。Linux 2.6.27中窗口大小和SO_RCVBUF选项有关,好像是进位到下一个1460的整数倍,例如:1024->14602500->2920[code="c"]/*作者:张亚霏2008-12-08晚...2008-12-08 20:08:45 · 1149 阅读 · 0 评论 -
TCPIP点点滴滴
之前学到的TCPIP里面很多点点滴滴都没有做笔记,可以了。2008-10-04UDP数据包截断[url]http://zhangyafei-kimi-163-com.iteye.com/blog/248817[/url]2008.10.04TCP协议里的时间[url]http://zhangyafei-kimi-163-com.iteye.com/blog/2488...2008-12-06 23:32:15 · 124 阅读 · 0 评论 -
UDP的ICMP差错的测试程序
[code="c"]/*作者:张亚霏2008-12-03早*//*UDP主机不可达、端口不可达测试*//*向一个已知主机的打开端口发一个UDP包,无任何异常*//*向一个已知主机的未打开端口发一个UDP包主机返回一个ICMP端口不可达报文结果就是之后的recvfrom返回-1GetLastError() WSAECONNRES...2008-12-03 10:07:02 · 389 阅读 · 0 评论 -
epoll的一个demo,备忘
[code="c"]/**张亚霏修改文件名:epoll_demo.c编译: gcc epoll_demo.c -pthread程序源码如下(请自行编辑宏定义SERVER_IP为自己的IP):*//*Linux 2.6 x86_64 only*/#include #include #include #include #inc...原创 2008-12-02 21:12:29 · 252 阅读 · 0 评论 -
用asio的定时器实现带超时的connect,备忘
[code="c++"]// test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include using namespace boost::asio;using boost::asio::ip::tcp;class connect_handler...2008-11-30 19:39:06 · 361 阅读 · 0 评论 -
自己写的IOCP的程序,备忘(2009-02-05更新)
[code="c"]#include #include #include #include #include #include #include "vld.h"#pragma message("automatic link to ws2_32.lib and mswsock.lib")#pragma comment(lib, "ws2_32.lib")#...2008-11-30 19:10:05 · 106 阅读 · 0 评论 -
TCP连接非正常断开的检测
如果主机崩溃,write是否阻塞取决于内核的tcp缓冲区,但read将一直阻塞,直到超时ETIMEOUT,或由于某些中间路由器的原因返回EHOSTUNREACH/ENETUNREACH。select不能检测到该情况。如果主机崩溃并重起,客户的write到达主机时主机响应RST,客户的read将返ECONNRESET。此处的”非正常断开”指TCP连接不是以优雅的方式断开,...原创 2008-10-24 14:58:29 · 350 阅读 · 0 评论 -
exit和_exit的区别
exit()在结束调用它的进程之前,要进行如下步骤:1.cleanup();2.在atexit()注册的函数;最后调用_exit()函数。。。‘exit()’与‘_exit()’有不少区别在使用‘fork()’,特别是‘vfork()’时变得很突出。‘exit()’与‘_exit()’的基本区别在于前一个调用实施与调用库里用户状态结构(user-mode c...原创 2008-10-23 19:38:29 · 114 阅读 · 0 评论 -
Linux-2.6.25 TCPIP函数调用大致流程
Linux-2.6.25 TCPIP函数调用大致流程学习目的,随手笔记。函数和文字说明会不断补充更新。Changelog2008.10.08 最近找工作忙。暂时缓缓插口层系统调用send sys_send sys_sendtosendto sys_sendto sock_sendmsgsendms...2008-10-08 21:53:17 · 240 阅读 · 0 评论 -
UDP数据包截断
Posix系列的recv、recvfrom、read函数均无法得到数据包被截断的错误消息,只有recvmsg可以得到该消息。ssize_t recvmsg(int socket, struct msghdr *message, int flags);如果message->msg_flags & MSG_TRUNC为真,则表示数据包被截断。超出部分被丢弃。但也有例外,Solari...2008-10-04 11:20:43 · 1149 阅读 · 0 评论 -
TCP协议里的时间
一、建立连接在发送SYN报文段后,如果在75秒没有收到相应相应,连接建立将中止。这个时间也就是阻塞connect系统调用的超时时间。二、保活SO_KEEPALIVE选项保持连接检测对方主机是否崩溃,避免(服务器)永远阻塞于TCP连接的输入。设置该选项后,如果2小时内在此套接口的任一方向都没有数据交换,TCP就自动给对方 发一个保持存活探测分节(keepalive probe...2008-10-04 11:18:17 · 1240 阅读 · 0 评论 -
Linux-2.6.25 select系统调用源码分析
Linux 2.6.25中的select系统调用主要有4个函数:sys_select:处理时间参数,调用core_sys_select。core_sys_select:处理三个fd_set参数,调用do_select。do_select:做select/poll的工作。在合适的时机把自己挂起等待,调用sock_poll。sock_poll:用函数指针分派到具体的协议层函数tcp...2008-10-04 11:12:49 · 95 阅读 · 0 评论 -
Linux和WIndows都不支持自连接
Cygwin下结果:connect() 127Transport endpoint is already connectedVC8下结果:connect() 10022No errorLinux 2.6.27下结果:connect() 106Transport endpoint is already connected[code="c"]...2008-12-09 09:29:31 · 110 阅读 · 0 评论