一、可重入和不可重入函数
可重入函数主要运行在多任务环境中,一个可重入函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任意期间中断这个函数,跳转去执行另外一段代码。当返回被中断处继续执行这个函数时不会发生错误(就是执行的环境没有改变)。
不可重入函数由于使用了一些系统资源(全局变量区,中断向量表等),所以如果它被中断然后中断返回继续执行的话,可能它的运行环境就会发生了改变。所以这类函数不能运行在多任务情况下。
二、tcp/ip的三次握手(建立连接协议)
1、客户端发送一个带SYN标志的TCP报文到服务器,建立一个主动打开
2、服务器接收到了客户端传过来的SYN标志的报文,然后返回一个带SYN标志和ACK标志的报文给客户端
ACK标志表示对刚才客户端SYN报文的回应。SYN标志询问客户端是否准备好进行数据通讯。
3、客户端返回一个ACK的报文给服务器,完成了三次握手,并进入了连接状态。
三、tcp/ip的四次握手(连接终止协议)
因为TCP连接是全双工的(指在发送数据的同时也能接收数据),因为每一个方向要单独关闭。
原则是当一方完毕它的数据发送任务后就能发送一个FIN来终止这个方向的连接
收到一个FIN仅仅意味着这一方向没有数据流动。
一个TCP连接在收到一个FIN后仍能发送数据
1、TCP客户端发送一个FIN。用来关闭客户端到服务器的数据传送
2、服务器收到这个FIN后,返回一个ACK给客户端,确认序号为收到的序号+1
3、服务器关闭客户端的连接,发送一个FIN给客户端
4、客户端返回ACK报文确认。并将确认序号设置为收到的序号+1
四、TCP/UDP区别
TCP--传输控制协议,提供的是面向连接、可靠的字节流服务。当客户端和服务器进行通信之前,必须现在双方之间建立一个TCP连接,之后才能传输数据。TCP还提供超时重发、丢弃重复数据、校验数据、流量控制等功能。保证数据能从一段传到另一端
UDP--用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP(网络层)层 的数据报发送出去。并不能保证数据能被接收端收到。由于UDP在传输数据报的之前不用在客户端和服务器之间建立一个连接,且没有超时重发等机制,因此传输速度很快。
总结:1、是否面向连接和面向非连接
2、传输可靠性和不可靠性
3、应用场合传输大量数据和少量数据
基于TCP的协议有:HTTP/HTTPS, Telnet, FTP, SMTP
基于UDP的协议有:DHCP, DNS, SNMP, TFTP, BOOTP