网络编程
文章平均质量分 71
遥望未来_cheerup
这个作者很懒,什么都没留下…
展开
-
TIME-WAIT状态
TCP在断开连接时,最先断开连接的一方最后会有一段时间处于TIME-WAIT状态,然后才会处于CLOSED状态。这个时间为2MSL,其中MSL为报文在传输线路中最大存活时间,一般设置为30秒到2分钟。也就是说TCP会处在TIME-WAIT状态持续2-4分钟。 为什么设置TIME-WAIT状态?原因有两个: A) 因为最后发送的ACK报文可能丢失,导致对方再发送一次F原创 2013-10-24 12:12:05 · 1450 阅读 · 0 评论 -
ioctl函数
ioctl函数用于在套接字上控制套接字的I/O行为,同时获取与套接字挂起的I/O操作的有关信息。第一个ioctl函数是ioctlsocket,其起源于Winsock 1规范,其定义如下:int ioctlsocket( SOCKET s, long cmd, u_long FAR* argp;);s:为要进行I/O操作的套接字描述符。cmd:一个预定义的标志原创 2014-10-29 15:51:20 · 6662 阅读 · 0 评论 -
TCP/IP协议一些重要内容
1.TCP相关保持活跃机制和心跳信号原创 2014-10-29 17:54:08 · 1176 阅读 · 0 评论 -
完成端口模型
完成端口模型步骤如下:1.调用CreateIoCompletionPort函数创建完成端口。HANDLE CompletionPort=CreateIoCompletionStatus(INVALID_HANDLE_VALUE,NULL,0,0);2.创建和处理器数目相等的工作线程SYSTEM_INFO SysInfo;GetSystemInfo(&SysInfo);for原创 2014-10-28 11:53:14 · 1976 阅读 · 0 评论 -
Winsock I/O方法
Winsock分别提供了套接字模式和套接字I/O模型。套接字模式分为阻塞模式和非阻塞模式。Winsock I/O模型:select(选择)、WSAAsyncSelect(异步选择)、WSAEventSelect(事件选择)、Overlappe I/O(重叠I/O)、Cpmpletion port(完成端口)。原创 2013-10-28 18:17:20 · 1841 阅读 · 0 评论 -
套接字选项
getsocketopt获得与给定套接字相关的相关信息。其定义如下:int getsocketopt( SOCKET s, int level, int optname, char FAR* optval, int FAR* optlen);s:其为一个给定的套接字,这个套接字必须有效level:为一个选项原创 2013-10-30 13:56:41 · 4978 阅读 · 0 评论 -
windows下socket编程:区分shutdown()及closesocket()
以下描述主要是针对windows平台下的TCP socket而言。首先需要区分一下关闭socket和关闭TCP连接的区别,关闭TCP连接是指TCP协议层的东西,就是两个TCP端之间交换了一些协议包(FIN,RST等),具体的交换过程可以看TCP协议,这里不详细描述了。而关闭socket是指关闭用户应用程序中的socket句柄,释放相关资源。但是当用户关闭socket句柄时会隐含的触发TCP连接转载 2013-11-17 12:42:12 · 2199 阅读 · 0 评论 -
运输层
从运输层的角度来看,网络中通信的双方是主机的进程。发送方主机上的不同进程可以使用同一个运输层协议来传送数据,这种技术叫复用。接收方的运输层在剥取报文的首部后,能够准确的将数据交付给目标进程,这话总技术叫分用。 为了解决通信双方无法识别对方通信进程的问题,运输层运用了16位的协议端口号的方法来解决。协议端口号是软件端口号,不同于硬件端口号。在因特网中,不同计算机中原创 2013-10-22 13:55:58 · 1126 阅读 · 0 评论 -
Winsock中名称解析和地址解析
随着IPv6添加了两个既能解析IPv4又能解析IPv6的函数:getnameinfo和getaddrinfo。这两个函数定义在头文件WS2TCPIP.H。1.getnaddrinfo其提供独立于协议的名称解析。其定义如下:int getaddrinfo( const char FAR *nodename, const char FAR *servrname,原创 2013-10-27 13:47:36 · 3475 阅读 · 0 评论 -
UDP协议
UDP协议在IP协议上增加了复用、分用和差错检测功能。UDP的特点: A)是无连接的。相比于TCP协议,UDP协议在传送数据前不需要建立连接,当然也就没有释放连接。 B)是尽最大努力交付的。也就是说UDP协议无法保证数据能够准确的交付到目的主机。也不需要对接收到的UDP报文进行确认。 C)是面向报文的。也就是说UDP协议将应用层传输下来的数据封装在一原创 2013-10-22 14:46:14 · 29185 阅读 · 0 评论 -
Winsock简介
Winsock有两个主要的版本,Winsock1和Winsock2。Winsock2对Winsock1的基础上进行了更新或添加新的API函数,用函数名前的WSA前缀来区分版本。开发新应用程序请使用Winsock2,要包含头文件WiINSOCK2和导入库WS2_32.LIB。如果要使用Winsock1,要包含头文件WINSOCK1.H和导入库WSOCK52.LIB。1.Winsock初始化在原创 2013-10-25 23:09:02 · 5129 阅读 · 0 评论 -
面向连接的通信和无连接的通信
1.面向连接的通信在IP中,面向连接的通信时通过TCP/IP协议来实现的。应用程序在使用TCP通信时,需要建立一个虚拟连接。其模型如下:服务器端一旦为协议创建了套接字,就要将套接字绑定到一个已知地址上,用bind函数来实现。其定义如下:int bind( SOCKET s, const struct sockaddr FAR *name, in原创 2013-10-26 23:11:58 · 6018 阅读 · 0 评论 -
TCP的数据发送和接收
TCP通信的单位是一个报文,TCP报文包括报文头部和数据部分,头部最少占用20个字节。运用TCP协议进行通信前需要建立连接(三次握手),数据传输完成后,最后需要断开连接(4次握手)。 TCP发送缓存和接收缓存,TCP发送窗口和接收窗口,以及拥塞窗口。 TCP的可靠传输是通过滑动窗口来实现的。TCP的滑动窗口的单位是字节的。 发送窗口中是表原创 2013-10-25 14:12:20 · 14661 阅读 · 0 评论 -
TCP协议一
TCP协议的特点: A)是面向连接的。应用程序在使用TCP协议时,必须进行连接;当然,数据传输结束后,要断开TCP连接。 B)TCP连接是点对点的。 C)TCP连接时可靠的。也就是说传输的数据时无差错的、不丢失、不重复、有序到达的。 D)是全双工的。即TCP连接的两端都设有发送缓存和接收缓存,用来存放双向通信的数据。原创 2013-10-22 17:39:20 · 1253 阅读 · 0 评论 -
TCP的连接和释放
TCP的连接TCP连接的建立采用客户服务器方式。TCP连接可分为通信双方一方发起连接和双方同时发起连接。一方发起连接 假设A方为客服端,B为服务器端,由A向B发起建立连接请求。 B的服务器进程创建传输控制块TCB,准备接受客户进程的连接请求。然后服务器进程处于LISTEN状态,等待客服端的连接请求。 A打的TCP客服端进程创建控制块TC原创 2013-10-23 22:27:20 · 13506 阅读 · 0 评论