网络编程中对TCP协议和UDP协议的理解

来源:互联网 发布:美国iea数据 编辑:程序博客网 时间:2024/06/06 01:25

TCP协议和UDP协议:

协议:计算机网络中进行数据交换的规则、标准或者是约定!

TCP协议:
1、TCP是工作在传输层的!对上服务Socket接口,对下调用IP层!
2、TCP是面向连接的,通信前必须经过三次握手协议建立连接关系,然后才能够进行通信!
跟生活中打电话之前要拨通号码是一个意思!
3、TCP协议可以提供可靠传输,不怕丢包以及乱序!

TCP是如何保证数据的可靠传输:
1、TCP在传输有效数据之前要求通信双方必须先握手,建立通信才可以进行数据传输!
2、TCP的接收在接收到数据包之后会发送ack(可以理解为“回复消息”)给发送方,如果发送方未收到ack,会重发一遍!
A给B发送数据,会有以下几种情况:
1、B没有收到A发送的消息;==》B就不会给A回复ack;===>A就不会收到ack==》A会认为数据没有发送成功===》A再发一遍;
2、B收到了A发送的消息,并且B也给A回复了ack===》ack自己丢了!==》A也会收不到ack===》A会认为数据没有发送成功
===》A会再发一遍数据 ====》B又收到了刚才的数据!(B就知道了ack信号在中途丢了)==》B给A回复一个ack===》
A收到ack之后,会认为数据发送成功!
总结:丢包重传机制!保证了数据的可靠传输!

3、TCP的有效数据内容会附带校验位,防止传输过程中数据损坏!
第二点是保证接收方可以收到数据,这一点是保证接收到的数据是正确的!
A在发送的时候会附带校验位,B收到之后计算一下校验位,如果和A传过来的相同===》数据传输是正确的!

4、TCP会根据网络带宽来自动调节发送的速度===》滑动窗口技术!

也就是说会根据接收方的接收情况,自动调节每次发送多少个数据包以及每个包里面包含多少个字节!
一秒钟发10个包丢1个,一秒钟发20个包丢3个===》赚了几个;
5、发送方会给各个分隔报文加个编号;
每次发送数据的时候不是一次性发送完毕!100M的数据分10次发送,每次10M!

以上就是TCP协议保证数据传输的可靠性机制!

TCP协议三次握手!
1、服务器在Listen状态,然后等待客户端的连接====》客户端主动连接服务器,而不是服务器来连接客户端;
2、建立三次握手的过程:

    1、客户端给服务器发送SYN,发送之后客户端进入到SYN_SEND状态;    2、服务器在Listen状态接收到客户端发过来的SYN之后,给客户端回复SYN+ACK,之后进入到SYN_RECEIVED状态;    3、客户端在SYN_SEND状态接收到服务器返回的SYN+ACK,之后会给服务器发送ACK,并且进入到ESTABLISED状态,然后服务器收到客户端发过来的ACK之后,进入到ESTABLISED状态;三次握手就建立成功!

TCP四次挥手:断开连接!
注意点:客户端和服务器都可以主动发起四次挥手!

UDP协议:
面向非连接,不是可靠的,没有建立连接的过程!

什么时候使用TCP,什么时候使用UDP
1、对可靠性要求比较高的使用TCP协议;
2、对可靠性要求不是太高的使用UDP协议;
3、对实时性要求比较高的使用UDP;

原创粉丝点击