计算机网络--TCP与UDP(区别,TCP报文格式)的学习笔记

文章目录

      • TCP与UDP
          • TCP与UDP协议
          • TCP与UDP的区别
          • 运行在TCP协议上的协议:
          • 运行在UDP协议上的协议:
          • TCP报文格式
            • 图解
            • 字段含义

TCP与UDP

TCP与UDP协议
  • TCP与UDP均是网络协议体系架构中运输层的协议,运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。 运输层主要使用了两种协议。
    1. TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,即在收发数据钱 ,都需要与对面建立可靠的链接。
    2. UDP(User Datagram Protocol)用户数据报协议,非连接的协议,传输数据之前源端和终端不需要建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。 在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽 的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。 相比TCP就是无需建立链接,结构简单,无法保证正确性,容易丢包
TCP与UDP的区别
协议 UDP TCP
是否连接 无连接 面向连接
是否可靠 不可靠,无流量控制和拥塞控制 可靠,使用流量控制和拥塞控制
连接对象个数 支持一对一,一对多,多对一,多对多 只能是一对一通信
传输方式 面向报文 面向字节流
首部开销 首部开销小,仅8字节 首部大60字节,小20字节
场景 适用于实时应用(IP电话,视频会议,直播等) 适合用于要求可靠传输的应用,如文件传输
传输单元 用户数据报 报文段

每一个应用层(TCP/IP参考模型的最高层)协议一般都会使用到两个传输层协议之一:

运行在TCP协议上的协议:
  • HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
  • HTTPS(HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
  • FTP(File Transfer Protocol,文件传输协议),用于文件传输。
  • POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
  • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
  • TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
  • SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。
运行在UDP协议上的协议:
  • BOOTP(Boot Protocol,启动协议),应用于无盘设备。
  • NTP(Network Time Protocol,网络时间协议),用于网络同步。
  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态 配置IP地址。 运行在TCP和UDP协议上:
  • DNS(Domain Name Service,域名解析服务),用于完成地址查找,邮件转发等工作。
TCP报文格式
  • TCP报文由俩部分组成:TCP报头和TCP数据。
  • TCP报文是TCP传输的数据单元。
图解

计算机网络--TCP与UDP(区别,TCP报文格式)的学习笔记_第1张图片

字段含义

端口号

  • TCP源端口(Source Port)(占16位): 源计算机上的应用程序的端口号。
  • TCP目的端口(Destination Port)(占16位): 目标计算机的应用程序端口号,表明了该数据报是发送给接收方计算机的具体的一个应用程序。

序列号

  • 序列号(Sequence Number):(占32位)::用来标识从 TCP 源端向 TCP 目的端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号。如果将字节流看作在两个应用程序间的单向流动,则TCP 用顺序号对每个字节进行计数。序号是 32bit 的无符号数,序号到达 2的32次方-1 后又从 0 开始。当建立一个新的连接时, SYN 标志变 1 ,顺序号字段包含由这个主机选择的该连接的初始顺序号 ISN ( Initial Sequence Number )。

确认序号

  • 确认序号( 占32 位):包含发送确认的一端所期望收到的下一个顺序号。因此,确认序号应当是上次已成功收到数据字节顺序号加 1 。只有 ACK 标志为 1 时确认序号字段才有效。 TCP 为应用层提供全双工服务,这意味数据能在两个方向上独立地进行传输。因此,连接的每一端必须保持每个方向上的传输数据顺序号。

数据偏移量

  • 也叫TCP 报头长度(Header Length)( 占4 位):给出报头中 32bit 字的数目,它实际上指明数据从哪里开始。需要这个值是因为任选字段的长度是可变的。这个字段占 4bit ,因此 TCP 最多有 60字节的首部。然而,没有任选字段,正常的长度是 20 字节。

保留位

  • 保留位( 6 位):保留给将来使用,目前必须置为 0 。

控制位

  • 控制位( control flags , 6 位):在 TCP 报头中有 6 个标志比特,它们中的多个可同时被设置为 1 。依次为:
    标识符 含义
    URG 为 1 表示紧急指针有效,为 0 则忽略紧急指针值。
    ACK 为 1 表示确认号有效,为 0 表示报文中不包含确认信息,忽略确认号字段。
    PSH 为 1 表示是带有 PUSH 标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满。
    RST 用于复位由于主机崩溃或其他原因而出现错误的连接。它还可以用于拒绝非法的报文段和拒绝连接请求。一般情况下,如果收到一个 RST 为 1 的报文,那么一定发生了某些问题。
    SYN 同步序号,为 1 表示连接请求,用于建立连接和使顺序号同步( synchronize )。
    FIN 用于释放连接,为 1 表示发送方已经没有数据发送了,即关闭本方数据流。

滑动窗口大小

  • 窗口大小( 占16 位):数据字节数,表示从确认号开始,本报文的源方可以接收的字节数,即源方接收窗口大小。窗口大小是一个 16bit 字段,因而窗口大小最大为 65535字节。该字段可以用于 TCP 的流量控制。

检验和

  • 校验和( 占16 位):此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证。

紧急指针

  • 紧急指针( 占16 位):只有当 URG 标志置 1 时紧急指针才有效。TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。

选项和填充

  • 选项和填充:最常见的可选字段是最长报文大小,又称为 MSS(Maximum Segment Size) 。每个连接方通常都在通信的第一个报文段(为建立连接而设置 SYN 标志的那个段)中
    指明这个选项,它指明本端所能接收的最大长度的报文段。选项长度不一定是 32 位字的整数倍,所以要加填充位,使得报头长度成为整字数。

数据部分

  • 数据部分: TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。

你可能感兴趣的:(计算机网络,udp,tcp/ip,网络协议,网络)