可重入、TCP、UDP

一、可重入和不可重入函数

可重入函数主要运行在多任务环境中,一个可重入函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任意期间中断这个函数,跳转去执行另外一段代码。当返回被中断处继续执行这个函数时不会发生错误(就是执行的环境没有改变)。

不可重入函数由于使用了一些系统资源(全局变量区,中断向量表等),所以如果它被中断然后中断返回继续执行的话,可能它的运行环境就会发生了改变。所以这类函数不能运行在多任务情况下。

二、tcp/ip的三次握手(建立连接协议)

1、客户端发送一个带SYN标志的TCP报文到服务器,建立一个主动打开

2、服务器接收到了客户端传过来的SYN标志的报文,然后返回一个带SYN标志和ACK标志的报文给客户端

ACK标志表示对刚才客户端SYN报文的回应。SYN标志询问客户端是否准备好进行数据通讯。

3、客户端返回一个ACK的报文给服务器,完成了三次握手,并进入了连接状态。

三、tcp/ip的四次握手(连接终止协议)

扫描二维码关注公众号,回复: 2660102 查看本文章

因为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

猜你喜欢

转载自blog.csdn.net/wllen_/article/details/81211256