Posix API总结

1、涉及函数接口

服务端:

a. socket()

b. bind()

c. listen()

d. accept()

e. send()

f. rec()

g. close()

客户端:

a. sokete()

b. bind()

c. connect()

d. send()

e. rec()

f. close()

问题1、三次握手,服务端、客户端,分别发生在哪个函数里面?

服务端:listen()和accept()

客户端:connect()

问题2、listenfd可不可以发送数据?

问题1、三次握手,服务端、客户端,分别发生在哪个函数里面?

服务端:listen()和accept()

客户端:connect()

问题2、listenfd可不可以发送数据?

问题3、TCP状态机的各种切换状态,TIME_WAIT状态持续时间及原因

60s,最后的ack能让被动关闭方接收, 让旧连接的重复分节在网络中自然消失

问题4、 超时重传的和快速重传

一般发送了报文后会有个定时器启动,如果定时器时间到了还没收到ack,就要重传,tcp有一下几种重传机制

超时重传:时间驱动,时间定时器触发。

快速重传:数据驱动,三次相同ack触发。

SACK:在快速重传的基础上,返回最近收到的报文段的序列号范围,这样客户端就知道,哪些数据包已经到达服务器了。

DSACK:SACK的基础上额外携带信息,目的是帮发送方判断是否发生了失序、ACK丢失、包重复或伪重传。

问题5、TCP首部长度,有哪些字段

问题6、TCP在listen时的参数backlog的意义

根据平台和版本的不同,含义不同,有半连接队列的size,全连接队列的size,全连接+半连接队列的size,这三种可能,如果有ddos,增大backlog其实意义不大。

问题7、accept发生在三次握手的那一步

第三步,收到ack添加进全连接队列时。

8、三次握手过程中有哪些不安全性

ddos攻击,接收到大量的syn报文,会创建大量的节点放入半连接队列,一般在防火墙或业务层逻辑(比如对来自同一ip的请求在一定时间内做了限制)做规避。

9、粘包问题

只有tcp才会有粘包问题,主要是tcp是基于字节流发送的,即应用程序所看到的数据是一个整体,这样导致一条消息的起止在tcp层没法判断,只有靠应用层协议来解决;而udp是面向消息的协议,即每条消息就是一个udp段,故不会有粘包问题。

四次挥手

大量的close_wait

双方同时调用close

        哪些场景会出现closing状态

什么情况下会有time_wait

 模板二:本专栏知识点是通过<零声教育>的线上课学习,进行梳理总结写下文章,对c/c++linux课程感兴趣的读者,可以点击链接,详细查看课程的服务:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值