TCP与UDP的介绍及应用

本文详细介绍了TCP与UDP协议的特点及应用场景,对比了两种协议的区别,包括面向连接与面向无连接的概念,TCP连接建立过程,以及UDP如何穿透NAT。并通过QQ聊天软件的实际应用案例进行了深入分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 最近刚看完TCP与UDP的相关知识,并进行整理了一下共大家讨论。有什么意见尽管提出,一起讨论。

TCPUDP的介绍及应用

目录:

一:什么是TCP/IP

二:TCP/IP整体构架概述。

三:TCP的定义及特点。

四:建立TCP连接的工作原理。

五:什么是面向连接?什么是面向无连接?

六:UDP的定义及其特点。

七:TCP端口及UDP端口介绍。

  1.什么是软件的端口?

  2.端口的主要类型:

  3.关于端口映射问题:

八:TCPUDP能否穿透NAT的问题。

1.什么是NAT

2NAT的作用:

3.TCP不能够穿透NAT,而UDP可以穿透NAT

九:TCPUDP的具体应用实例(通过QQ进行分析)

1.    具体说明QQ如何实现通信;

2.    具体说明QQ怎样处理NAT;

3.简要说明两个用户每次建立QQ通信的模式;

十:关于QQ通信的几个问题

 

:什么是TCP/IP
TCP/IP(Transmission Control Protocol/Internet Protocol)
即传输控制协议/网间协议,是一组包括TCP协议和IP协议,UDPUser Datagram Protocol)协议、ICMPInternet Control Message Protocol)协议和其他一些协议的协议组。

注解:该协议主要用于在主机间建立一个虚拟连接,以实现高可靠性的数据包交换。IP协议可以进行IP数据包的分割和组装,但是通过IP协议并不能清楚地了解到数据包是否顺利地发送给目标计算机。而使用TCP协议就不同了,在该协议传输模式中在将数据包成功发送给目标计算机后,TCP会要求发送一个确认;如果在某个时限内没有收到确认,那么TCP将重新发送数据包。另外,在传输的过程中,如果接收到无序、丢失以及被破坏的数据包,TCP还可以负责恢复。

 

:TCP/IP整体构架概述:
TCP/IP
协议并不完全符合OSI的七层参考模型,而是采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:
应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCPUDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。
互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。
网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如EthernetSerial Line等)来传送数据。

 

:TCP的定义及特点:

TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

 

:建立TCP连接的工作原理:

一个TCP连接必须要经过三次“对话”才能建立起来,简单的介绍一下:

主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;

主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;

主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。

 

五:什么是面向连接?什么是面向无连接?

  面向连接就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。
 
面向无连接就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。比如发送手机短信:你在发短信的时候,只需要输入对方手机号就OK了。

 

六:UDP的定义及特点:

UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。提供的是非面向连接的、不可靠的数据流传输。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

举例:一个UDP的简单应用。

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

 

七:TCP端口及UDP端口介绍:

1.什么是软件领域的端口?

软件领域的端口一般指:网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。

2.端口的主要类型:

端口主要分为两种,一种是TCP端口,一种是UDP端口。计算机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用UDP协议。对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口。
TCP/IP
协议中的端口范围是从0 65535比较常见的有:8080端口—WWW

端口:21 ----FTP   端口:23 ---Telnet   端口80---HTTP

3.关于端口映射问题:

内网的一台电脑要上因特网,就需要端口映射。端口映射分为动态和静态两种,动态端口映射其实也就是NAT网关的工作方式。(后面的实例中会具体应用)   静态端口映射:就是在NAT网关上开放一个固定的端口,然后设定此端口收到的数据要转发给内网哪个端口,不管有没有连接,这个映射关系都会一直存在。就可以让公网主动访问内网的一个电脑。

 

:关于TCP,UDP能否穿透NAT问题:

1.什么是NAT

NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IPInternet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。如图:

2NAT的作用:

NAT就是在局域网内部网络中使用内部地址,而当内部节点要与外部网络进行通讯时,就在网关(可以理解为出口,打个比方就像院子的门一样)处,将内部地址替换成公用地址,从而在外部公网(internet)上正常使用,NAT可以使多台计算机共享Internet连接,这一功能很好地解决了公共IP地址紧缺的问题。通过这种方法,您可以只申请一个合法IP地址,就把整个局域网中的计算机接入Internet中。这时,NAT屏蔽了内部网络,所有内部网计算机对于公共网络来说是不可见的,而内部网计算机用户通常不会意识到NAT的存在。如图所示。这里提到的内部地址,是指在内部网络中分配给节点的私有IP地址,这个地址只能在内部网络中使用,不能被路由。NAT将这些无法在互联网上使用的保留IP地址翻译成可以在互联网上使用的合法IP地址。

3.TCP不能够穿透NAT,而UDP可以穿透NAT

 

九:TCPUDP的具体应用实例:(通过QQ聊天进行分析)

如图所示:有两台主机A,B分别位于两所不同学校的内部网,A B两台主机通过QQ进行相互聊天,视频,传输文件,在整个网络中是如何实现的呢?

1.北大内网中的电脑B要访问QQ,会向NAT网关(路由器)发送数据包,包头中包括对方(就是QQ)IP、端口和本机IP、端口,NAT网关会把本机IP、端口替换成自己的公网IP、一个未使用的端口,并且会记下这个映射关系,为以后转发数据包使用。

而此时飞洋学院的电脑A也正在访问QQ,想通过QQ与异地的B取得联系,这时QQ服务器会把B的映射数据传送到ANAT网关那个未使用的端口,(通常路由器的一个端口会对应内网主机的许多端口)然后NAT网关会通过端口将数据转发给内网中的主机A,然后A就获得BIP信息并与B取得联系(形成点对点通信)。当连接关闭时,NAT网关会释放分配给这条连接的端口,以便以后的连接可以继续使用。

2.具体说一下QQ怎样处理NAT?

在处理NAT,对于每一个内部IP,在请求时,都在会QQ服务器中留下一个有效的外部IP+Port  这个外部IP就是那个内网的服务器IP,而端口号则映射子网中的某一台机器。QQ服务器就通过那个IP来找到双方所在的服务器,再通过端口号来定位相应子网的计算机,从而实现双方通信的。  

3.简要说明两个用户每次建立QQ通信的模式?

当用户登陆QQ时,用户需要首先与qq服务器进行连接进行登录,服务器会向客户返回一些信息,比如你的好有的在线情况以及ip的信息,然后客户可以与你所请求的朋友进行点对点连接,两者互相通信。如图所示:

S------C1
|
|                 C1
每次想和C2通信,先向S递一个申请,然后S同意,把信息转交C2
C2                
以后每次通信都这样

S------C1
|
|                 C1
第一次想和C2通信,向S递一个申请,S同意,告诉C1,C2,然后
C2

S-----C1
|      /
|    /           C1
C2之间建立了一条连接,可以直接通信,无需经过S.
C2

 

 

十:问题思考:

1.QQ传文件是用什么协议传输?UDP还是TCP

2.在局域网内用QQ通信,(即在同一个NAT下)需要用到TCP协议吗?还是用UDP直连?

 

 

问题分析:

1.大家都知道TCP不能穿透NAT,而UDP可以穿透NAT和防火墙。(不过已经有研究者们通过大量的渠道去尝试TCP穿透NAT,依赖于NAT回复的大量TCPICMP包的顺序,终于有方法得以成功打通NAT。有兴趣的可以去看一个相关技术)

QQ传文件和视频TCPUDP都在使用。从QQ的提示信息可以看到有TCP中转,UDP中转,UDP直连三种方式。TCP直连除非是能在NAT上开固定的端口映射(或者使用uPnp之类的自动开指定的端口映射),否则靠双发同时发起连接是不可能的(这个概率可能比彗星撞地球的概率还少)。当TCP可以连接时是用TCP,当位于不同的NAT后面时是通过应用层用UDP仿照TCP的模式进行运作,所以相对速度会慢。

2.局域网的QQ通信的话就不经过QQ服务器可以直接通过UDP进行直连通信,否则就要经过QQ服务器转发数据。但发现QQ都涉及了TCPUDP两种方式,之所以这样好像是为了保证数据的完整性而使用了类似TCP的东西吧。

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值