本篇文章只会简略的写面试官经常会问到的一些问题,具体的实现原理希望大家还是再百度百度
1.面试必问题目:TCP、UDP
先写个废话,大部分面试官其实都不会问了,因为太简单了:
TCP/IP四层模型:数据链路层、网络层、传输层、应用层
百度上q了一张,差不多就设这个意思
首先了解一下两者的区别:
1.数据传输方面:TCP是字节流(实际上是一个一个数据包),UDP是数据报
2.TCP是面向连接的,UDP是无连接的。变现出来的就是TCP客户端需要设置监听,connect,保证链接,而UDP则没有,用户端只需要直到对方的IP 端口就可以发送
3.TCP相比UDP传输更加的稳定(数据正确性,顺序性)。这得益于他的字节流和3次(4次)握手的机制,tcp的发送端要确认对方是否收到数据段。
4.TCP协议采用窗口技术和控制流
具体实现TCP、UDP的流程:
TCP:
服务器 | 客户端 | |
1.创建TCP套接字 | 1.创建TCP套接字 | |
2.设置IP地址、端口号、协议到套接字上 | 2.设置IP地址、端口号、协议到套接字上 | |
3.将未连接的套接字设置为监听套接字(UDP没有) | 3.发起连接(UDP没有) | |
4.阻塞等待客户的链接 | ||
5.发送接收数据 | 4.发送接收信息 | |
6.回收套接字资源 | 5.回收套接字 |
UDP:
服务器 | 客户端 | |
1.创建一个UDP协议套接字 | 1.创建一个UDP协议套接字 | |
2.设置IP地址、端口号、协议到套接字上 | 2.设置IP地址、端口号、协议到套接字上 | |
3.阻塞等待客户的链接 | 3.发送数据 | |
4.接收数据 | 4.回收套接字资源 | |
5.回收套接字资源 |
TCP如何解决粘包的问题:粘包解决办法
2.数据库因该是比较重要的东西了,下面数据库sql常见的命令数据库命令