TCP、UDP协议间的区别(转)

一.TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了。
  TCP/IP协议集包括应用层,传输层,网络层,数据链路层。
  应用层包括:

超文本传输协议(HTTP):万维网的基本协议.
文件传输(TFTP简单文件传输协议):
远程登录(Telnet):提供远程访问其它主机功能,它允许用户登录internet主机,并在这台主机上执行命令.
网络管理(SNMP简单网络管理协议):该协议提供了监控网络设备的方法,以及配置管理,统计信息收集,性能管理及安全管理等.
域名系统(DNS):该系统用于在internet中将域名及其公共广播的网络节点转换成IP地址. 

  传输层包括:

TCP:(Transmission Control Protocol,传输控制协议)是基于连接的协议;
UDP:(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去! 

  网络层包括:

Internet协议(IP)
Internet控制信息协议(ICMP)
地址解析协议(ARP)
反向地址解析协议(RARP)  

  数据链路层:网络访问层又称作主机到网络层(host-to-network).网络访问层的功能包括IP地址与物理地址硬件的映射,以及将IP封装成帧.基于不同硬件类型的网络接口,网络访问层定义了和物理介质的连接.

二.TCP协议

  TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
  TCP三次握手过程

1.主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,
  主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我.
2.主机B收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:
  我已经收到你的请求了,你可以传输数据了;你要用哪佧序列号作为起始数据段来回应我
3.主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:"我已收到回复,我现在要开始传输实际数据了
  这样3次握手就完成了,主机A和主机B 就可以传输数据了.

  3次握手的特点

没有应用层的数据
SYN这个标志位只有在TCP建产连接时才会被置1
握手完成后SYN标志位被置0

  TCP建立连接要进行3次握手,而断开连接要进行4次

1.当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
2.主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
3.由B 端再提出反方向的关闭请求,将FIN置1
4.主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.
  由TCP的三次握手和四次断开可以看出,TCP使用面向连接的通信方式,大大提高了数据通信的可靠性,使发送数据端和接收端在数据正式传输前就有了交互,为数据正式传输打下了可靠的基础

  名词解释
  ACK  TCP报头的控制位之一,对数据进行确认.确认由目的端发出,用它来告诉发送端这个序列号之前的数据段都收到了.比如,确认号为X,则表示前X-1个数

    据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0时,确认号无效,这时会要求重传数据,保证数据的完整性.
  SYN  同步序列号,TCP建立连接时将这个位置1
  FIN  发送端完成发送任务位,当TCP完成数据传输需要断开时,提出断开连接的一方将这位置1
  TCP的包头结构:

源端口 16位
目标端口 16位
序列号 32位
回应序号 32位
TCP头长度 4位
reserved 6位
控制代码 6位
窗口大小 16位
偏移量 16位
校验和 16位
选项  32位(可选)
这样我们得出了TCP包头的最小长度,为20字节。

三.UDP(User Data Protocol,用户数据报协议)

(1) UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。  在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序  每次从队列中读一个消息段。
(2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
(3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
(4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
(5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
(6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,  应用程序需要选择合适的报文大小。

  我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。
  UDP的包头结构:

源端口 16位
目的端口 16位
长度 16位
校验和 16位这样我们得出了TCP包头的最小长度,为20字节。

四.TCP和UDP区别

  1.基于连接(TCP)与无连接(UDP);
  2.对系统资源的要求(TCP较多,UDP少);
  3.UDP程序结构较简单;
  4.流模式(TCP)与数据报(UDP)模式 ;
  5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

时间: 2024-10-03 21:54:09

TCP、UDP协议间的区别(转)的相关文章

网络编程—网络基础概览、socket,TCP/UDP协议

网络基础概览 socket概览 socket模块-TCP/UDP的实现 TCP/UDP总结 网络基础概览 osi七层协议各层主要的协议 # 物理层传输电信号1010101010 # 数据链路层,以太网协议,arp协议.对这些信号进行分组,同时规范了分组形式--以太网协议,头部是mac地址中间是信息, # 网络层:ip协议,arp协议帮忙找到mac地址,ip,子网掩码,网关(下面有一些简单概括) # 传输层:tcp协议,udp协议 # (socket)就是一组接口,将复杂的tcp协议和udp协议隐

TCP/UDP协议

TCP/UDP协议 1.协议简介 TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议.其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送.可靠性.有效流控.全双工操作和多路复用.通过面向连接.端到端和可靠的数据包发送.通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送:而UDP则不为IP提供可靠性.流控或差错恢复功能.一般来说,TCP对应的是可靠性要求高的应用,而UDP

Shell 脚本实现TCP/UDP协议通讯

Shell 脚本实现TCP/UDP协议通讯 http://www.cnblogs.com/occult/archive/2012/12/25/2832183.html

TCP/UDP协议简要梳理

TCP/UDP协议简要梳理 TCP TCP,Transmission Control Protocol,传输控制协议是一种面向连接的.可靠的.基于字节流的传输层通信协议.在因特网协议族中,TCP所在的层位于IP层之上,应用层之下. TCP面向连接.其实网络上的传输是没有连接的,包括TCP也是如此.而TCP所谓的"连接",其实只不过是在通讯的双方维护一个"连接状态",从而从应用层看,它们是连接在一起的.所以,TCP的状态变换非常重要.尤其在进行数据传递前的三次握手和数

java 通过TCP\UDP 协议实现多人聊天,点对点,文件传送-----分服务器端和客户端

java 通过TCP\UDP 协议实现多人聊天,点对点,文件传送-----分服务器端和客户端 启动界面如下图: 首先启动服务器: 客户端登陆,登陆成功后为: 默认发送是全部用户,是多人发送. 当在边列表里面选择了用户后,可以与此用户建立点对点链接进行聊天,可以发送文件. 用户在线离线状态会实时更新,如果离线,则存为离线消息.当下次上线的时候,会接受到离线消息 从一个用户接受文件的同时,还可以接受从服务器发过来的文件 接受文件完成后,显示记录,并显示保存目录 消息发送演示 服务器端代码: 1 im

第29篇ip地址,mac地址 IPV4 IPV6 TCP UDP协议

回顾 2018-12-31 或者 2018.12.31 或者 2018*12*31 的正则表达式: [1-9]\d{3}(?P<sep>.)(1[12]|0?[1-9])(?P=sep)([12]\d|3[01]|0?[1-9])内容总览: ip地址 mac地址 IPV4 IPV6 TCP UDP协议 同一台机器的两个程序通讯-->文件 两台机器的两个程序之间通讯 -->网络 mac 每一台计算机的网卡 上面会有一个mac地址,也就是相当于改计算机在网络上的唯一身份表示 xx-xx

Samba 服务使用的端口和协议(是一组TCP UDP协议的组合,主要使用CIFS协议,有一个Java例子)

Samba服务所使用的端口和协议: 1)Port 137 (UDP) - NetBIOS 名字服务 : nmbd 2)Port 138 (UDP) - NetBIOS 数据报服务 3)Port 139 (TCP) - 文件和打印共享 : smbd (基于SMB(Server Message Block)协议,主要在局域网中使用,文件共享协议) 4)Port 389 (TCP) - 用于 LDAP (Active Directory Mode) 5)Port 445 (TCP) - NetBIOS

TCP/UDP 协议介绍

TCP/IP五层网络结构模型 物理层:物理层建立在物理通信介质的基础上,作为系统和通信介质的接口,用来实现数据链路实体间透明的比特 (bit) 流传输.只有该层为真实物理通信,其它各层为虚拟通信 数据链路层:在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列.数据的单位称为帧(frame) 网络层:选择合适的路由,使数据分组(packet)可以交付到目的主机 传输层:负责主机中进程间的通信 应用层:直接为

异常处理与网络基础中的tcp,udp协议

# 异常处理: # 什么是异常?异常和错误的区别 # Error 语法错误 比较明显的错误 在编译代码阶段就能检测出来 # Iteration 异常 在执行代码的过程中引发的异常 # 异常发生之后的效果 # 一旦在程序中发生异常,程序就不再继续执行了 # try: # # name # [][3] # except NameError: # print("请设置好变量!!") # except IndexError: #分支异常处理 # print('请认真!!') # # excep