网络编程
文章平均质量分 67
zhangyin_blog
这个作者很懒,什么都没留下…
展开
-
TCP/IP三次握手建立连接和四次挥手终止连接
(一)三次握手建立连接(1)首先服务器端进行初始化,由最初的closed状态顺序调用socket、bind、listen后进入listen状态;(2)客户端进行初始化,由最初的closed状态顺序调用socket、connect主动连接服务器套接字进入SYN_SENT状态(向服务器发送将SYN置为1的同步数据段);(3)服务器接收到SYN后向客户端发送将SYN置为1的同步数据段和ACK...原创 2018-07-28 17:06:12 · 7354 阅读 · 0 评论 -
TCP四次挥手终止连接的TIME_WAIT状态
(1)存在TIME_WAIT状态的原因 首先,只有主动调用closed的一方才会在接收到对端的ACK后进入time_wait状态;并且任意一方都可以先发起closed;下图为四次挥手状态:原因一:保证TCP全双工连接的可靠释放解析:假设场景为客户端主动向服务器发起断开连接,假如在主动方(客户端)最后一次发送的ACK在网络中丢失,根据TCP的超时重传机制,被动方(服务器)需要重新...原创 2018-07-28 19:09:52 · 7233 阅读 · 0 评论 -
TCP/IP中的拥塞控制
(一)慢开始和拥塞避免算法(二)快开始和快恢复原创 2018-07-28 20:30:13 · 1174 阅读 · 0 评论 -
阻塞与非阻塞,同步与异步
(一)小情景模拟阻塞与非阻塞,同步与异步所需材料:本人、普通水壶、水开后会发出响声的水壶情景一:我主动用普通水壶去烧水(主动请求事件:同步),并且一直站在旁边等待水开(等待数据准备好在进行下一步,阻塞),然后做饭; 同步阻塞情景二:我主动用普通水壶去烧水(主动请求事件)不需要一直检测,每隔一段时间会过来看水是否开了(没有一直等待事件:非阻塞,但还是存在主动查看事件的行为),一直...原创 2018-07-29 11:40:07 · 297 阅读 · 0 评论 -
TCP/IP协议之ip协议详解
原创 2018-08-11 21:20:41 · 161 阅读 · 0 评论 -
网络编程总结(C/S)
(一)TCP编程流程服务器端编程流程/*第一步:创建socket int socket(int domain.int type,int protocol)成功时返回一个socket 失败时返回-1并设置errordomain:告诉系统使用哪个底层协议族 PF_INET(ipv4) PF_INET6(ipv6)type:指定服务类型 SOCK_STREAM(流服务) SOCK_UGRA...原创 2018-08-22 13:16:36 · 933 阅读 · 0 评论 -
网络编程中的细节问题
(一)socket阻塞与非阻塞问题在创建socket函数中的第二个参数types用来指定服务类型,在Linux2.6.17版本起,除了之前的SOCK_STREAM(流式服务)、SOCK_UGRAM(数据报服务)以外,又增加了SOCK_NONBLOCK和SOCK_CLOEXEC,分别表示将创建的socket设置为非阻塞的和用fork创建的子进程在子进程中关闭该socket;第一个问题:如何将...原创 2018-08-22 14:28:49 · 443 阅读 · 0 评论 -
I/O复用之select
函数功能:在一段时间内,监听用户感兴趣的文件描述符上的可读、可写与异常事件函数原型:int select(int nfds,struct fd_set *readfds, struct fd_set *writefds,struct fd_set *execptfds,struct timeval * timeout)nfds:要监听的最大文件描述符加1; readfds:监听用户感兴趣的...原创 2018-08-22 17:24:06 · 197 阅读 · 0 评论 -
I/O复用之poll
函数功能:在一段在指定的时间内,监听用户感兴趣的可读、写、异常事件函数原型:int poll(struct pollfd* fds,nfds_t* nfds,int timeout) fds:指向所有感兴趣的文件描述符上的可写、可读、异常事件,它是一个结构体的数组类型,每个格子都包含以下内容:struct pollfd{ int fd;//文件描述符 short ...原创 2018-08-22 19:13:32 · 196 阅读 · 0 评论