当前位置:网站首页 > 编程语言 > 正文

udp 广播报文(udp广播需要端口号吗)



[TOC]

进程间通信:

点到点的通信:IP协议负责主机到主机的通信。作为网络层协议,IP协议只能把报文交付给目的主机。

端到端的通信:运输层协议负责进程到进程的通信。TCP和UDP协议负责把报文交付到正确的进程。

端口号:

主机是用IP地址来标识的,而要标识主机中的进程,就需要使用端口号。TCP/IP协议族中,端口号占16 bit,用0~65535之间的整数标识。TCP和UDP是两个独立的软件模块,因此各自的端口号也相互独立。·端口号只具有本地意义,不同计算机的相同端口号是没有联系的。

三类端口号:
UDP的熟知端口号:
套接字:

为了使多主机、多进程通信时不发生混乱,必须把主机的IP地址和端口号结合起来使用,称为套接字(Socket).

客户套接字地址唯一地定义了客户进程;服务器套接字地址唯一地定义了服务器进程;TCP与UDP都使用套接字通信;

套接字包括IP地址(32位)端口号(16位),共48位.进行通信的一对套接字在整个Internet中是唯一的。

面向连接的服务:进行数据交换前,先建立连接,传输结柬后释放连接

无连接的服务:两个实体通信前不必先建立连接。

无连接服务灵活方便,但不能防止报文的丢失、重复和乱序。·每个报文必须包含完整的源地址和目的地址,因此开销较大。

用户数据报协议UDP

UDP协议简介:

UDP (User Datagram Protocol,用户数据报协议)提供无连接的传输服务,对等的UDP实体在传输时不建立端到端的连接,只是简单地发送或接收数据报

UDP协议直接位于IP协议的上层,属于运输层协议。 UDP协议不提供端到端的确认和重传功能,它不保证数据包一定能到达目的地,因此是不可靠协议,使用UDP的程序可根据自己的需求设计相应的可靠性机制,如TFTP。

UDP协议的特点

发送数据之前不需要建立连接,UDP主机不需要维持复杂的连接状态表。

UDP用户数据报只有8个字节的首部开销。 网络的拥塞不会使源主机的发送速率降低,这对某些实时应用是很重要的。·当数据包在传送过程中发生错误时UDP不能报告错误。 UDP保留应用程序定义的报文边界,当应用程序把一块数据交给UDP发送时,这块数据将作为独立的单元到达对方的应用程序,因此,应用程序必须关心IP数据报的长度。

UDP报文格式:

首部字段和数据字段。首部字段8个字节,由4个字段组成,每个字段2字节

UDP用户数据报封装在IP数据报中,IP数据报的“协议类型”字段的值是17,表示数据部分是从UDP协议来的。

UDP校验和的计算

UDP校验和的计算与IP和ICMP校验和的计算不同。UDP校拉和T拉H围包括三部分:伪首部、UDP首部以及从应用层来的数据。

伪首部是IP首部的一部分,其中有些字段要填入0。若校演和不包括伪首部,用户数据报也可能是安全的和正确的。但是,若lP首部受到损伤,则它可能被交付到错误的主机。

伪首部中的高层协议类型是为了确保这个数据报是属于UDP而不是是属丁于TCP。UDP的高层协议类型是17,若这个值在传输过程中出错,接收端就能检出并丢弃这个数据包,从而不会交付给错误的协议。

UDP的应用:

UDP适用于这样的进程,它需要简单的请求—响应通信,而较少考虑流量控制和差错控制。对于需要传送成块数据的进程,如FTP,则通常不使用UDP。 UDP适用于具有内部流量控制和差错控制机制的进程。对多播和广播来说,UDP是个比较合适的传输层协议。UDP可用于管理进程,如SNMP协议。 UDP可用于某些路由选择更新协议,如RIP协议。

传输控制协议TCP

TCP协议简介:

TCP协议是TCP/IP协议族中的面向连接的、可靠的、端到端的运输层协议。

TCP提供全双工服务,全双工连接包括两个独立的、方向相反的数据流。与UDP不同,TCP允许发送和接收字节流形式的数据。为了使服务器和客户端以不同的速度双向发送和接收数据,TCP提供了发送和接收两个缓冲区。TCP在报文中加上一个递增的确认序列号来告诉发送端,接收端期望收到的下一个报文,如果在规定时间内,没有收到关于这个包的确认响应,则重新发送此包,这保证了TCP是一种可靠的传输层协议。

TCP报文格式:

源端口:2字节,主机中发送这个报文的应用程序端口号。

目的端口:2字节,目的主机中接收这个报文的应用程序的端口号。

序列号:4字节,定义了指派给本报文第一个数据字节的一个序号。TCP是流式传输协议,为了保证连通性,要在发送的每一个字节上编号。序号指定了这个序列中的哪一个字节是报文的第一个字节。在连接建立时,双方使用随机数产生器产生初始序号,通常每一方的初始序号都是不同的。

确认号:4字节,接收端期望收到的下一个报文段中数据部分的第一个字节的序号。

首部长度:4位,指定TCP首部的长度,以4字节为单位。首部长度可以在20~60字节之间。因此,这个字段的值可以在5至15之间。 保留字段:4位,保留为今后使用,目前应置为0。 控制字段:定义了8种不同的标志。用在TCP的流量控制、连接建立和终止以及数据传送的方式等方面。在同一时间可设置一位或多位标志。

窗口:2字节,窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。这时,发送端必须服从接收端的决定。

检验和:2字节,检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。

紧急指针:2字节,只有当URG=1时才有效,指出在本报文段中的紧急数据的最后一个字节的序号,使接收方知道紧急数据共有多少字节(紧急数据结束后是普通数据)。发送方TCP即使发送窗口为0,也要对带有URG标志的数据段实行强制发送。

选项:长度可变,最多40字节。

最大报文段长度MSS (Maximum Segment Size)。

填充:为了使整个首部长度是4字节的整数倍,全0填充。

TCP的封装:

TCP报文封装在lP数据报中,IP数据报的“协议类型”字段的值是6

TCP链接的建立与释放:

连接的三个阶段:连接建立、数据传送和连接释放。连接建立

服务器首先准备接收TCP连接,这个过程叫做被动打开。这时的服务器的TCP已经准备好接受任何一台主机的TCP连接了。客户程序发出TCP请求的过程叫做主动打开。然后服务器与客户端就开始三次握手过程。

三次握手建立连接:

1.客户发送第一个报文,这是一个SYN报文,在这个报文中只有SYN标志置为1,这个报文的作用是使序号同步。

2.服务器发送第二个报文,即SYN+ACK报文,其中SYN和ACK标志被置为1首先,它是一个用来和对方进行通信的SYN报文。服务器使用这个报文同步初始序号,以便从服务器向客户发送字节。服务器还使用ACK标志确认已从客户端收到了SYN报文,同时给出期望从客户端收到的下一个序号。另外,服务器还定义了客户端要使用的接收窗口的大小。

3.客户发送第三个报文。这仅仅是一个ACK报文。它使用ACK标志和确认号字段来确认收到了第二个报文。 然后客户端就可以通知上层应用进程,连接已经建立。服务器收到客户机的确认后,也通知上层应用进程,连接已经建立。

半关闭的四次握手方式终止连接:

半关闭:TCP连接中,一方可以终止发送数据,但仍然保持接收数据,称为半关闭。半关闭通常是由客户端发起的。

半关闭的过程

流量控制:

发送端收到接收端的确认报文之前,对发送端发送的数据量进行管理

在不考虑流量控制的情况下,传输层协议可以每次只发送一个字节的数据,然后在发送下一个字节数据之前等待接收端的确认报文。这是一个非常缓慢的过程,发送端在等待确认报文时一直处于空闲状态。 还有一种情况是传输层协议一次就将全部数据发送出去,而不理会确认报文。这样虽然加速了发送过程,但可能会使接收端来不及接收而瘫痪。此外,若有一部分数据丢失、重复、失序或损坏,发送端就要一直等到接收端将全部数据都检查完毕后才能知道。

滑动窗口

TCP的流量控制在缓存上定义了一个窗口,称为滑动窗口,窗口大小的单位是字节,TCP发送数据的多少由滑动窗口决定。

TCP报文段首部的窗口字段就是给发送方设置的发送窗口的上限。

发送窗口在连接建立时由双方商定,在通信过程中动态调整。

如果发送方收到接收方的窗口大小U HIr以人tx’P送数据(带URG标志的数据段除外)。

发送端只要收到了对方的确认,发送窗口就可前移。 发送TCP维护一个指针。每发送一个报文段,指针向前移动一个报文段的距离。

滑动窗口的右沿可以向左移动吗? 滑动窗口的右沿向左移动通常发生在对方通知窗口缩小时。使某些可以发送的数据变成不能发送,如果发送端已经发送了这些数据,就会产生错误。 TCP标准强烈不赞成这样做。

滑动窗口的左沿可以向左移动吗? 窗口的左沿不能向左移动,因为这表示已经发送出去的并且经过确认的数据现在又要回收了

拥塞控制:
拥塞控制与流量控制的对比:

出现资源拥塞的条件: 对资源需求的总和>可用资源

流量控制:在给定的发送端和接收端之间的点对点通信量的控制

拥塞控制的作用:
拥塞控制方法

慢开始: 初始设置拥塞窗口cwnd = 1,每收到一个对新的报文段的确认后,将拥塞窗口加1,逐步增大发送端的拥塞窗口cwnd。

拥塞避免: 使拥塞窗口cwnd按线性规律缓慢增长,“加法增大”。

快重传:接收方每收到一个失序的报文段后就立即发出重复确认,这样做可以让发送方及早知道有报文段没有到达接收方。发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段。

快恢复:当发送端收到连续三个重复的确认时,就执行“乘法减小”算法,把慢开始门限ssthresh 减半,但接下去不执行慢开始算法,而是执行拥塞避免算法“加法增大”,使拥塞窗口缓慢地线性增大,实现快恢复。

发送窗口大小:

考虑拥塞控制的情况下,窗口大小由接收窗口和拥塞窗口两者中的较小者决定。接收窗口大小由接收方发送的确认报文中的窗口大小字段值所确定。这是接收端在缓存溢出导致数据被丢弃之前所能接受的最大字节数。拥塞窗口大小是由网络根据拥塞情况而确定的。 发送窗口的上限值= Min [rwnd, cwnd]

差错控制:
TCP的差错控制

实现方式:通过校验和、确认以及超时重传三种机制实现

到此这篇udp 广播报文(udp广播需要端口号吗)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • /bin/sh 未找到命令(/bin/bash: bison: 未找到命令)2024-12-29 13:36:05
  • junit4的优点(junit特点)2024-12-29 13:36:05
  • 单片机的代码怎么编写(单片机代码怎么读懂)2024-12-29 13:36:05
  • dex反混淆工具安卓(dex反编译工具安卓版)2024-12-29 13:36:05
  • spss 27(spss 27安装程序错误)2024-12-29 13:36:05
  • 拆包鼠标是什么意思呀(拆包鼠标是什么意思呀图片)2024-12-29 13:36:05
  • jflash怎么烧录(jflash配置)2024-12-29 13:36:05
  • pillows是什么意思中文(pillows是什么意思中文翻译)2024-12-29 13:36:05
  • onenet论文(u-net论文)2024-12-29 13:36:05
  • 密码仓库(仓库里的密码情)2024-12-29 13:36:05
  • 全屏图片