unix网络编程第2章
2016-08-10 00:55
85 查看
time_wait状态 可靠地实现tcp全双工连接的终止;(假设客户端先关闭).服务端再关闭,服务端将发送fin ,客户端此时进入time_wait状态.客户端接收到fin.将回一个ack.如果这个ack一旦丢失..time_wait这段时间,会使得服务端重新发送fin
(2)使得老的重复分节在网络中消失,五元组相同这个规则存在一个例外:如果到达的SYN的序列号大于前一化身的结束序列号,源自Berkeley的实现将给当前处于TIME_WAIT状态的连接启动新的化身(必须是服务端先关闭.因为接收下一个syn的那一端必须是time_wait状态
(3)如果ip数据包从某个接口发送,大小超过mtu将被分片.在到达目的地之前不会被重组.不过ip首部的df位一旦设置将会使得不可分片.如果超过mtu.将返回icmp.此应用可用于mtu路径发现.(不过现在防火墙会屏蔽icmp..现在应该会有不依赖icmp 路径mtu发现)IP也定义了最小重组缓冲区大小.就是最小数据报大小.TCP的MSS用于告诉对端每个分组最大可以发送的tcp数据量.MSS一般设置为MTU减去IP跟TCP首部的固定长度.
TCP输出当用户程序调用write.内核将从用户缓冲区复制到套接字缓冲区,如果该套接字没法容下应用进程所有数据.那用户程序将休眠.write阻塞.直到用户缓冲区数据都复制到了套接字缓冲区.因此.write成功返回只表示用户缓冲区的内容复制到套接字缓冲区.并不代表对端进程已经接收到数据UDP输出udp并没有发送缓冲区.不过有发送大小.限制数据报大小上限.如果进程写了一个比udp套接字都大的数据包.内核直接返回一个emsgsize错误.从一个udp的write调用成功表示所写的数据报已经加入了数据链路层的输出队列中.如果队列都没有空间存放.内核返回一个ENOBUFS错误给用户进程
来自为知笔记(Wiz)
(2)使得老的重复分节在网络中消失,五元组相同这个规则存在一个例外:如果到达的SYN的序列号大于前一化身的结束序列号,源自Berkeley的实现将给当前处于TIME_WAIT状态的连接启动新的化身(必须是服务端先关闭.因为接收下一个syn的那一端必须是time_wait状态
(3)如果ip数据包从某个接口发送,大小超过mtu将被分片.在到达目的地之前不会被重组.不过ip首部的df位一旦设置将会使得不可分片.如果超过mtu.将返回icmp.此应用可用于mtu路径发现.(不过现在防火墙会屏蔽icmp..现在应该会有不依赖icmp 路径mtu发现)IP也定义了最小重组缓冲区大小.就是最小数据报大小.TCP的MSS用于告诉对端每个分组最大可以发送的tcp数据量.MSS一般设置为MTU减去IP跟TCP首部的固定长度.
TCP输出当用户程序调用write.内核将从用户缓冲区复制到套接字缓冲区,如果该套接字没法容下应用进程所有数据.那用户程序将休眠.write阻塞.直到用户缓冲区数据都复制到了套接字缓冲区.因此.write成功返回只表示用户缓冲区的内容复制到套接字缓冲区.并不代表对端进程已经接收到数据UDP输出udp并没有发送缓冲区.不过有发送大小.限制数据报大小上限.如果进程写了一个比udp套接字都大的数据包.内核直接返回一个emsgsize错误.从一个udp的write调用成功表示所写的数据报已经加入了数据链路层的输出队列中.如果队列都没有空间存放.内核返回一个ENOBUFS错误给用户进程
来自为知笔记(Wiz)
相关文章推荐
- Unix网络编程学习笔记之第2章 TCP和UDP
- unix网络编程第2章:传输层:TCP,UDP和SCTP
- UNIX网络编程 第2章:TCP、UDP和SCTP
- UNIX网络编程-第2章-2.1-2.10
- 第2章 信息系统集成及服务管理
- Unix网络编程中的五种I/O模型_转
- 《鲜活的数据-第2章 处理数据》有关代码
- 【笔记】《WebGL编程指南》学习-第2章WebGL入门(2-WebGL的HelloWorld)
- 第2章 Django 速成:构建一个Blog:
- 【牛客网】直通bat-面试算法精品课_第2章 排序 2.10 基数排序练习题(JAVA版)
- Play For Scala 开发指南 - 第2章 Scala基本语法
- 第2章:生成、打包、部署和管理应用程序及类型
- 《数据结构与算法分析-第2章-算法分析》
- 第2章 一切都是对象
- 第2章安装CentOS答案
- 《数字技术》连载16: 第2章 数字器件 第11节 JK 触发器
- 第2章 控制流
- 第2章 黑盒测试
- UNP-UNIX网络编程 第五章:TCP客户/服务器程序示例
- 【廖雪峰python3.0】-课后习题:第2章:第一个python程序 and 第三章:python基础