网络编程中对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;
- 网络编程中对TCP协议和UDP协议的理解
- [网络编程]TCP协议和UDP协议的区别
- 网络编程的TCP/UDP协议
- 网络编程之UDP协议和TCP协议
- 从网络编程实践中加深对TCP协议三次握手的理解
- 网络协议 TCP 和 UDP
- VC中网络编程的常用函数及UDP,TCP协议编程步骤
- Java网络编程UDP与TCP协议
- java网络编程之UDP、TCP协议
- 网络编程--传输协议tcp/udp
- day22网络编程 UDP、TCP协议
- 基于UDP、TCP协议的C#网络编程之一
- 【转载】 基于UDP、TCP协议的C#网络编程
- 基于UDP、TCP协议的C#网络编程
- UDP协议和TCP协议的区别
- udp协议和tcp协议的区别
- TCP协议和UDP协议的区别
- TCP协议和UDP协议的区别
- hdu1542线段树+离散化+扫描线详解
- LeetCode50 pow(x, n)
- Unity之ScrollRect滑动居中
- 系统学习java高并发系列二
- 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐
- 网络编程中对TCP协议和UDP协议的理解
- 深入分析 Java 方法反射的实现原理
- 学习Linux-4.12内核网路协议栈(1.8)——网络设备驱动模块的加载
- 你必须理解的计算机核心概念
- MYSQL之存储过程
- ArcGIS Engine 9.2 打开多波段栅格数据
- 败犬#1
- Connections in Galaxy War ZOJ
- IDEA Usage of API documented as @since 1.6+ 语法错误解决方案