没有合适的资源?快使用搜索试试~ 我知道了~
12 - tcp状态转换-select-poll.pdf
需积分: 1 0 下载量 66 浏览量
2023-05-31
16:48:47
上传
评论
收藏 698KB PDF 举报
温馨提示
试读
17页
12 - tcp状态转换-select-poll.pdf
资源推荐
资源详情
资源评论
能够描述TCP通信过程中主要状态
1.
独立使用select实现IO多路转接
2.
理解使用poll实现IO多路转接操作流程
3.
学习目标
分区 12 - tcp状态转换-select-poll 的第 1 页
ssize_t read(int fd, void *buf, size_t count);
○
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
○
数据接收
1.
ssize_t write(int fd, const void *buf, size_t count);
○
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
○
数据发送
2.
flags 赋值为0
0 - send/recv
分区 12 - tcp状态转换-select-poll 的第 2 页
第一次握手
第二次握手
第一次挥手
等待时长
a.
主动关闭连接的一方, 处于TIME_WAIT状态
b.
有的地方: 2分钟, 30s, 一般时候是30s(MSL)
c.
2MSL
1.
A给B发送是FIN(A调用了close函数), 但是B没有给
A发送FIN(B没有调用close)
A断开了与B的连接, B没有断开与A的连接
如何理解?
○
A不能给B发送数据, A可以收B发送的数据
B可以给A发送数据
特点:
○
通信的文件描述符
□
sockfd: 要半关闭的一方对应的文件描述符
SHUT_RD - 0 - 读
□
SHUT_WR - 1 - 写
□
how:
函数: int shutdown(int sockfd, int how);
○
半关闭
2.
等待
2MSL
第二次挥手
第
3
、
4
次挥手
1 - tcp状态转换
分区 12 - tcp状态转换-select-poll 的第 3 页
SHUT_WR - 1 - 写
□
SHUT_RDWR - 2 - 读写
□
思考: close函数能否实现半关闭?
○
fd
命令:netstat
○
参数:
○
-a (all)显示所有选项,默认不显示LISTEN相关
-p 显示建立相关链接的程序名
-n 拒绝显示别名,能显示数字的全部转化成数字。
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-l 仅列出有在 Listen (监听) 的服务状态
查看网络相关状态信息
1.
内核缓冲区
sfd
write
read
dup
复制文件描述符
-
dup2
dup2(old, new)
dup2(sfd, fd)
close(fd);
分区 12 - tcp状态转换-select-poll 的第 4 页
剩余16页未读,继续阅读
资源评论
好奇养活小猫
- 粉丝: 222
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功