网络编程
ccc_yxc
这个作者很懒,什么都没留下…
展开
-
TCP缓存区与窗口的关系
TCP缓存区与窗口关系网上大多错误的理解滑动窗口大小=接受缓存区大小接收方通告窗口大小=发送方缓存区大小注意:以上两个结论都是错误的我们在学习网络编程时,通常会参考两本很经典的书《UNIX网络编程 卷1》和《TCP/IP 卷1》。然而,我在看与缓存区与窗口相关模块知识点时,通常会犯迷糊。感觉这两本书对其的描述很少,描述得有点模糊。《TCP/IP详解 卷1》第1版的一句重要的描述,因为在小字处原创 2016-09-12 17:43:16 · 13942 阅读 · 6 评论 -
套接字选项 SO_REUSEADDR
SO_REUSEADDR 4个不同功能1.允许启动一个监听服务器并捆绑其有名端口,即使以前建立的将该端口用作它们的本地端口的连接仍存在。使用这种功能一般是解决如下问题: (1)启动了一个监听服务器 (2)连接请求到达,派生一个子进程处理一个客户。 (3)监听服务器终止了,但子进程继续为连接上的客户提供服务。 (4)为了重启服务器,使用SO_REUSEADDR。在(4)步,监听服务器尝试soc原创 2016-09-20 21:31:46 · 746 阅读 · 0 评论 -
UNP 卷1 多种客户/服务器设计方式 总结
快一个月没有更新博客了,主要是因为这一个月一直在复习和深入数据结构《数据结构与算法分析》和刷了一遍《剑指offer》。个人习惯是,博客记录些总结性的内容。太基础,太浅显易懂的内容留在印象笔记里。这边博客主要讲述多种客户/服务器设计方式的一些我认为比较重要的知识点,还有第一次正式使用CLion打项目型代码遇到的问题。配置出现问题,包括CLion里的没有搭建unp环境的,看这里搭建环境。 搭建环境主要原创 2016-11-08 00:52:08 · 845 阅读 · 0 评论 -
小端与大端
小端:将低序的存在低地址。 大端:将低序的存在高地址。与小端相反。 譬如 x=0x1234 低序=34,低序号的数,排在后面的数。 低地址=内存地址 0x1000 < 0x1001. char a[2]; a[0]肯定是低地址; a[1]肯定是高地址;其实理解这个目前来说没什么用,在网络编程中,htons、htonl、ntohs、ntohl可以直接转换主机字节序和网络字节序。在发送到网原创 2017-02-19 11:25:35 · 4632 阅读 · 0 评论 -
I/O复用:pselect
int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);int pselect(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout,原创 2017-02-19 13:53:06 · 358 阅读 · 0 评论 -
【转载】select和poll调用深入解析
select调用深入解析 poll调用深入解析 上面两个链接写关于select和poll底层是怎样工作,很细心对源代码进行剖析,解释得挺详细的。特别是关于poll。其实select和poll底层都是把fd copy到内核,遍历所有fd数组,然后把对应的进程(当前进程)挂载到专属于这个fd的等待队列上面。如果这个fd可读或可写,就在队列中激活进程。然后内核再填写好状态,copy回用户空间。用户跳出原创 2017-02-19 22:25:33 · 273 阅读 · 0 评论 -
TCP/IP:UDP(1)
1.UDP不提供可靠性意味着:把应用程序传给IP层的数据发送出去,但是并不保证它们能够到达目的地.2.应用程序必须关心IP数据报的长度.如果超过网络的MTU,那么就要对IP数据报进行分片.并不是只是发送端连接的第一个网络才切片,而是途径的,从源端到目的端之间的每个网络都可能进行分片(如果要分片).3.UDP首部:(图来源于网络,是正确的) 有几点需要注意的: (1)UDP长度是指UDP首部和原创 2017-02-03 15:18:48 · 383 阅读 · 0 评论