1. TCP和UDP有什么区别?
TCP是面向连接的,数据通讯前需建立一条连接,UDP是无连接的,面向用户数据报文;TCP是有序的,UDP不保证;TCP有流量控制,
丢失重传,数据校验等功能确保可靠性,UDP只负责发送,不管能否成功接收,是不可靠的;TCP对系统资源要求较多,速度相对慢,
UDP简单,实时性高。TCP的连接是一对一的,因此不适合多播和广播的应用,而UDP非常适合。
2. TCP怎么保证报文是有序的?
TCP的连接是逻辑上的,而不是物理上。
TCP发送数据包时为每个数据包分配一个序列号,并将该数据包放入缓冲区,设置超时计数器,在一段时间内等待接收方对这个报文的
确认。若一段时间后仍未收到对该数据包的确认ACK,发送方会重传该数据包。在接收端,例如收到数据包1后对该数据包确认的ACK报文
中确认序号填2,指的是期待下一个序号为2的数据包。若收不到就会一直ACK序号2,直到所有的有序数据全部接受完成,组合交给上层。
总结来说,TCP是通过序列号,确认号以及确认-重传机制来保证报文是有序的。
3. 系统怎么自动分配栈?
堆的增长从低地址到高地址增长,栈的增长从高地址向低地址增长。
函数运行时分配,函数结束时释放,栈中存放函数参数,局部变量,返回值,返回地址。栈的内存分配运算内置于处理器的指令集,
效率相对于堆分配来说很高,但是分配的空间有限。