讲的非常好https://zhuanlan.zhihu.com/p/84316213
https://www.bilibili.com/video/BV1gk4y1o7pX?from=search&seid=11428053758137106450
https://www.cnblogs.com/inception6-lxc/p/9152691.html
1.TCP,UDP的区别
https://www.cnblogs.com/liangyc/p/11628208.html
2.如何保证UCP也是可靠的?(重传,确认)
传输层无法保证数据的可靠传输,只能通过应用层来实现,实现的方式可以参考 TCP 可靠性传输,只是实现不在传输层,实现转移到了应用层
不管哪类场景,都是要保证可靠性,也就是质量,那么在UDP之上怎么实现可靠呢?答案就是重传。
https://blog.csdn.net/qq_41880190/article/details/89404864
https://blog.csdn.net/Kim_Weir/article/details/78777221
3.TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?四次握手可以吗?
https://www.nowcoder.com/questionTerminal/dd2e0e9a1618496baabad2abc56d9609
4.TCP为什么要进行三次握手呢?
三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。
5.请你讲述一下Socket编程的send() recv() accept() socket()函数
send函数用来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答,send的作用是将要发送的数据拷贝到缓冲区,协议负责传输。
recv函数用来从TCP连接的另一端接收数据,当应用程序调用recv函数时,recv先等待s的发送缓冲中的数据被协议传送完毕,然后从缓冲区中读取接收到的内容给应用层。
accept函数用了接收一个连接,内核维护了半连接队列和一个已完成连接队列,当队列为空的时候,accept函数阻塞,不为空的时候accept函数从上边取下来一个已完成连接,返回一个文件描述符。