【计算机网络】TCP协议和UDP协议详解

概述:

TCP/IP 协议族(栈)是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。TCP/IP 协议采用4层结构,分别是应用层、传输层、网络层和链路层。

在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。

在传输层中有TCP协议UDP协议

在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。

接下来让我们讨论的是传输层的TCP和UDP协议 


 TCP协议

TCP(Transmission Control Protocol),又叫传输控制协议。

UDP协议比较简单,实现容易,但它没有确认机制, 数据包一旦发出,无法知道对方是否收到,因此可靠性较差,为了解决这个问题,提高网络可靠性,TCP协议就诞生了,TCP即传输控制协议。每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方就必须重发这个数据包。

相关字段介绍:

字段名称作用
源端口和目的端口各占2个字节分别标识源端和目的端应用进程,两者加上IP首部的源端IP地址和目的端IP地址唯一确定一个TCP连接。IP地址+端口号=socket(套接字)
序号4个字节,SYN标志未置位时,该字段指示了用户数据区中第一个字节的序号;在SYN标志置位时,该字段指示的是初始发送的序列号。在TCP传送的数据流中,每一个字节都有一个序号。例如,一报文段的序号为300,而且数据共100字节,则下一个报文段的序号就是400;序号是32bit的无符号数,序号到达2^32-1后从0开始。
确认号4个字节,确认本端TCP实体已经接收到的数据,其值表示期待对方端发送的下一个字节的序号。确认序号应该是上次已成功收到数据字节序号+1只有ACK标志为1时,确认序号才有效。
数据偏移4bit,表示数据开始的地方离TCP段的起始处有多远。实际上就是TCP段首部的长度,用于确定用户数据区的起始位置。由于首部长度不固定,因此数据偏移字段是必要的。
保留6bit,供以后使用,现在置为0
URG当URG=1时,表示此报文应尽快传送,而不要按本来的列队次序来传送。与“紧急指针”字段共同应用,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,使接管方可以知道紧急数据共有多长;
ACK只有当ACK=1时,确认序号字段才有效;
PSH‘’push操作,以强迫传输当前的数据,不必等待缓冲区满才传输。当PSH=1时,接收方应该尽快将本报文段立即传送给其应用层。
RST当RST=1时,表示出现连接错误,必须释放连接,然后再重建传输连接。复位比特还用来拒绝一个不法的报文段或拒绝打开一个连接;
SYNSYN=1,ACK=0时表示请求建立一个连接,携带SYN标志的TCP报文段为同步报文段
FIN字符串发送完毕,没有其它数据需要发送,该比特置位表示连接确认分组。
窗口指明该分组的发送端愿意接收的从确认字段中的值开始的字节数量。窗口大小是一个16bit字段,因而窗口大小最大为65535字节
校验和对TCP分组的头部和数据进行校验。由发送端计算和存储,并由接收端进行验证。
紧急指针只有当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
任选项用于处理一些特殊情况。目前被正式使用的选项字段可用于定义通信过程中的最大分组长度,只能在连接建立时使用。
填充用于保证任选项为32bit的整数倍。

1.特点:

1)面向连接

(在基于 TCP 进行通信时,通信双方需要先建立一个 TCP 连接,建立连接需要经过三次握手,握手成功才可以进行通信,而断开连接要进行4次。)

 2)每一条TCP连接只能有两个端点(即两个套接字),只能点对点

 3)面向字节流。虽然应用程序与TCP交互是一次一个大小不等的数据块,但TCP把这些数据看成一连串无结构的字节流,它不保证接收方收到的数据块和发送方发送的数据块具有对应大小关系,例如,发送方应用程序交给发送方的TCP10个数据块,但就受访的TCP可能只用了4个数据块久保收到的字节流交付给上层的应用程序,但字节流完全一样。(数据流模式)

 4)提供可靠的传输服务。传送的数据无差错、不丢失、不重复、按序到达。  

 5)提供全双工通信。允许通信双方的应用进程在任何时候都可以发送数据,因为两端都设有发送缓存和接受缓存。

 6)TCP占用的系统资源较多,首部开销20字节 

 7)TCP使用慢开始拥塞避免快重传快恢复来进行拥塞控制,避免网络拥塞。

2.可靠传输的工作机制

1)确认应答机制          2)超时重传机制

TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对成功接收到的字节发送一个相应的确认;如果发送端实体在合理的往返时延内未收到确认,那么对应的数据将会被重传。


UDP协议

UDP(User Datagram Protocol),又叫用户数据报协议

链路层定义了主机的身份,即MAC地址, 而网络层定义了IP地址,明确了主机所在的网段,有了这两个地址,数据包就从可以从一个主机发送到另一台主机。但实际上数据包是从一个主机的某个应用程序发出,然后由对方主机的应用程序接收。而每台电脑都有可能同时运行着很多个应用程序,所以当数据包被发送到主机上以后,是无法确定哪个应用程序要接收这个包。

因此传输层引入了UDP协议来解决这个问题,为了给每个应用程序标识身份,UDP协议定义了端口,同一个主机上的每个应用程序都需要指定唯一的端口号,并且规定网络中传输的数据包必须加上端口信息。 这样,当数据包到达主机以后,就可以根据端口号找到对应的应用程序了。UDP定义的数据包就叫做UDP数据包。

UDP数据包由首部和数据两部分组成,首部长度为8个字节,主要包括源端口、目标端口、长度、校验和;数据最大为65527个字节,整个数据包的长度最大可达到65535个字节。

1.特点:

1)面向无连接 

 2)支持一对一、一对多、多对多的交互通信

 3)面向报文的,对应用层交下来的报文,不合并,不拆分,保留原报文的边界;(数据报模式)

 4) 尽最大努力交付,不保证可靠交付,可能丢包

 5)如果一定要涉及到全双工的话,大概理解为不仅提供全双工,甚至提供全多工服务,只是UDP是不可靠的服务而已。

 6) UDP占用的系统资源较少,首部开销8字节

 7)UDP没有拥塞控制,因此即使网络出现拥塞也不会降低发送速率


TCP和UDP的应用场景

从特点上我们已经知道,TCP 是可靠的但传输速度慢 ,UDP 是不可靠的但传输速度快。因此在选用具体协议通信时,应该根据通信数据的要求而决定。

若通信考虑数据完整性与通信实时性,则应该选用 TCP 协议(如文件传输、重要状态的更新等);反之,则使用 UDP 协议(如视频传输、实时通信等)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值