(UNP)问题小结

写在前面:

主要概论和一些具体疑问以及更多的提问式思考。

UNP和TCP/IP详解

一.TCP三路握手,连接终止:

1.tcp可靠性实现之一。三个分组()确保服务器和客户端的确认信息都会有回应。

2.每次回应序号加一防止被延时的分组又被重传的情况下,导致错误。

3.连接终止,服务端半关闭,服务端close套接字,也会发送一个FIN,为四个分组。

4.建立连接的超时机制。connect后发送FIN无响应,6s->24s->75s无响应返回出错。

5.listen()把未连接套接字编程被动套接字(提示内核接受指向该套接字的请求)。 成功返回listening socket

6.accept()从已完成连接队列头(三路握手完成)返回下一个已完成连接。 成功返回connected socket

一个服务器仅仅创建一个 监听套接字 listening socket 生命周期内存在。

服务器进程接受的客户 已连接套接字 connected socket 完成服务被关闭。

二.TCP和UDP区别:

TCP 传输控制协议 (Transmission Control Protocol) 面向连接协议; 全双工字节流->stream socket; 关注确认,超时,重传细节。

UDP 用户数据报协议 (User Datagram Protocol) 无连接协议; 数据包套接字->datagram socket; 无法保证能否到达目的地。

大多数tcp服务器并发,udp服务器迭代

三.五种I/O模型

.select和epoll区别:

selecy 和epoll。功能类似,用IO复用。允许进程提示内核等待多个事件的任何的其中一个发生,并只有在一个或者多个事件发生或经历后,才唤醒它。
int select(int nfds, fd_set *readfds, fd_set *writefds,
                  fd_set *exceptfds, struct timeval *timeout);
需要
使用描述符集来指定fd_set参数值,如下四个宏:

       void FD_CLR(int fd, fd_set *set);
       int  FD_ISSET(int fd, fd_set *set);
       void FD_SET(int fd, fd_set *set);
       void FD_ZERO(fd_set *set);
最大描述符固定!

int poll(struct pollfd *fds, nfds_t nfds, int timeout);

struct pollfd {
               int   fd;         /* file descriptor */
               short events;     /* requested events */
               short revents;    /* returned events */
           };

 这样只需管理pollfd结构体,如分配一个数组,而不用关系最大描述符问题。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值