TCP/UDP协议总结与应用层常见协议及端口


在这里插入图片描述

1、TCP协议

TCP协议概述

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

TCP的应用场景

需要将传输的文件分段传输,建立会话。具体应用场景如下:

  • 效率要求相对低,但对准确性要求相对高的场景,因为传输中需要对数据进行确认,重发,排序等操作,效率没有UDP高。
  • 文件传输:FTP\HTTP对数据的准确性要求高,速度可以相对慢。
  • 发送或接收邮件:POP3\IMAP\SMTP对数据准确性要求高,非紧急应用。
  • 远程登陆:TELNET\SSH对数据准确性有一定要求,有连接概。

TCP的特点

  • TCP是面向连接的传输协议。
  • 每一条TCP连接只能有2个端口。每一条TCP连接只能是点对点的。
  • TCP提供可靠通信。
  • TCP是全双工通信。
  • 面向字节流。

TCP的报文格式

在这里插入图片描述

  • 源端口:源端口和IP地址的作用是标识报文的返回地址。
  • 目的端口:端口指明接收方计算机上的应用程序接口。
  • 序列号:序号是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节一个序号。一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。所以序号确保了TCP传输的有序性。
  • 确认号:即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。比如建立连接时,SYN报文的ACK标志位为0。
  • 数据偏移/首部长度:4位,该字段的值是TCP首部(包括选项)长度除以4。
  • 保留:为将来定义新的用途保留,现在一般置0。
  • 控制位:URG ACK PSH RST SYN FIN,共6个,每一个标志位表示一个控制功能。
    1.URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。
    2.ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。
    3.PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
    4.RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。
    5.SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。
    6.FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。
  • 窗口:滑动窗口大小,用来告知发送端接受端的缓存大小。
  • 校验和:奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据。
  • 紧急指针:只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。

TCP三次握手

  • 客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
  • 服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
  • 客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
    三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

TCP四次挥手

  • 某个应用进程首先调用close,称该端执行“主动关闭”(active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。
  • 接收到这个FIN的对端执行 “被动关闭”(passive close),这个FIN由TCP确认。
  • 一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
  • 接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。

2、UDP协议

UDP概述

User Data Protocol用户数据包协议,是传输层中一种无连接协议。提供面向报文的简单不可靠信息传送服务。UDP在IP报文的协议号是17。UDP不对数据包分组、组装以及不能对数据包进行排序,当报文发送之后,UDP是无法得知其是否安全完整到达的。

UDP的应用场景

UDP运用在一个数据包就能够完成数据通信,不需要分段,不需要建立会话,不需要流量控制,是不可靠的传输协议。绝大多数UDP应用都不需要可靠机制,甚至可能因为引入可靠机制而降低性能。流媒体、即时多媒体游戏和IP电话就是典型的UDP应用。如果某个应用需要很高的可靠性,那么可以用传输控制协议(即TCP协议)来代替UDP。

UDP的特点

  • UDP是无连接的,传输数据之前源端和终端不建立连接不需要建立连接。
  • 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
  • UDP支持一对一、一对多、多对一和多对多的交互通信。
  • UDP是面向报文。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。
  • UDP信息包只有8个字节,相对于TCP的20个字节信息包而言UDP的额外开销很小。

UDP报文格式

在这里插入图片描述
UDP报头由4个域组成,其中每个域各占用2个字节,具体包括源端口号、目标端口号、数据报长度、校验值。

  • 源端口号:发送端口。
  • 目标端口号:接受端口。
  • 数据报长度:保存了UDP首部的长度跟数据长度之和。
  • 校验值:提供可靠的UDP首部和数据。

3、协议对比

UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同:

  • TCP 是面向连接的传输控制协议;而UDP 提供了无连接的数据报服务。
  • TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP 在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作。
  • UDP 具有较好的实时性,工作效率较 TCP 协议高。UDP 段结构比 TCP 的段结构简单,因此网络开销也小。
  • TCP 协议可以保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务。对可靠性要求高的通信系统往往使用 TCP 传输数据。

4、应用层常见协议及端口

常见服务协议端口号
POP3TCP110
IMAPTCP143
SMTPTCP25
TelnetTCP23
RDPTCP3389
PPTPTCP1723
HTTPTCP80
HTTPSTCP443
FTPTCP20/21
NTPUDP123
RADIUSUDP1645
DHCPUDP67
DNSTCP/UDP53
SNMPUDP161
TFTPUDP69
L2TPUDP1701
ipsecUDP500
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值