建设网站大约多少钱,怎么创建平台卖自己的产品,企业解决方案,产品开发项目管理文章目录 概述UDPTCP首部格式 连接管理连接建立连接释放 概述
从IP层看#xff0c;通信双方是两个主机。
但真正进行通信的实体是在主机中的进程#xff0c;是这个主机中的一个进程和另一个主机中的一个进程在交换数据。
所以严格的讲#xff0c;两个主机进行通信就是两个… 文章目录 概述UDPTCP首部格式 连接管理连接建立连接释放 概述
从IP层看通信双方是两个主机。
但真正进行通信的实体是在主机中的进程是这个主机中的一个进程和另一个主机中的一个进程在交换数据。
所以严格的讲两个主机进行通信就是两个主机中的应用进程互相通信。
IP协议能把分组送到主机但分组还停留在主机的网络层而没有交付给主机中的应用进程。 从运输层看通信的真正端点并不是主机而是主机中的进程。即端到端的通信是应用进程之间的通信。在一个主机中经常有多个应用进程同时分别和另一个主机中的多个应用进程通信。
运输层的重要功能
复用在发送方不同的应用进程都有可以使用同一个运输层协议传送数据分用接收方的运输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程 协议
两个主要协议
用户数据报协议UDPUser Datagram Protocol | RFC 768 | UDP用户数据报传输控制协议TCPTransmission Control Protocol | RFC 793 | TCP报文段
UDP在传送数据之前不需要先建立连接远程主机的运输层收到UDP报文后不需要给出任何确认。
TCP提供面向连接的服务。在传送数据之前必须先建立连接数据传送结束后要释放连接。TCP不提供广播或多播服务。
一些应用和应用层协议主要使用的运输层协议 运输层的端口
因特网上使用的计算机的操作系统种类很多不同的操作系统又使用不同格式的进程标识符。为了使运行不同操作系统的计算机的应用进程能够互相通信必须使用统一的方法对TCP/IP体系的应用进程进行标志这种方法必须与特定操作系统无关。
但把一个特定机器上运行的特定进程指明为因特网上通信最后的终点还是不可行的。这是因为进程的创建和撤销都是动态的通信的一方几乎无法识别对方机器上的进程。 另外往往需要利用目的主机提供的功能来识别终点而不需要知道具体实现这个功能的进程是哪一个。
解决方法是在运输层使用协议端口号简称为端口port。也就是说虽然通信的终点是应用进程但只要把传送的报文交到目的主机的某一个合适的目的端口剩下的工作就由TCP来完成。
TCP/IP的运输层用一个16位端口号来标志一个端口。端口号只具有本地意义只是为了标志本计算机应用层中的各个进程在运输层交互时的层间接口。在因特网的不同计算机中相同的端口号是没有关联的。16位的端口号可允许有65535个不同的端口号。 两个计算机中的进程互相通信不仅需要对方的IP地址还需要知道对方的端口号。
因特网上的计算机通信是采用客户-服务器方式客户在发起通信请求时必须知道对方服务器的IP地址和端口号。运输层的端口号分为两大类 1、服务器端使用的端口号又分为两类
熟知端口号或系统端口号数值0~1023可在www.iana.org查到指派给TCP/IP最重要的应用程序让所有的用户都知道。 登记端口号数值1024~49151。 是为没有熟知端口号的应用程序使用的。这类必须在IANA登记以防止重复。
2、客户端使用的端口号数值1024~65535。这类端口号仅在客户进程运行时动态选择又叫短暂端口号。通信结束就不存在了。
UDP
在IP之上增加很少的功能
复用分用差错检测
主要特点
无连接减少了开销和发送数据之前的时延尽最大努力交付即不保证可靠交付面向报文发送发的UDP对应用程序交下来的报文添加首部后就向下交付给IP层。既不合并也不拆分保留这些报文的边界。 无拥塞控制支持一对一、一对多、多对一、多对多交互通信首部开销小只有8字节TCP有20字节
首部格式
数据字段和首部字段
首部字段由四个字段组成每个字段的长度都是两个字节 1、源端口 在需要回信时选用不需要可全用0 2、目的端口 终点交付报文 3、长度 UDP用户数据报的长度最小值是8 4、检验和 检测UDP用户数据报在传输时是否有错有错就丢弃 如果接收方UDP发现收到的报文中的目的端口号不正确就丢弃该报文并由ICMP发送“端口不可达”差错报文给发送方 UDP的检验和是把首部和数据部分一起都检验IP数据报的检验和只检验IP数据报的首部 TCP
主要特点 1、面向连接 2、每一条TCP连接只能有两个端点每一条TCP连接只能是点对点的 3、提供可靠交付。无差错、不丢失、不重复、按序到达 停止等待协议 无差错情况发送-确认-发送-确认······ 出现差错 A超过一段时间仍没有收到确认就认为刚才发送的分组丢失了重传前面发送过的分组这叫做超时重传。 要实现超时重传要在发送完一个分组设置一个超时计时器如果在超时计时器到期之前收到了对方的确认就撤销以设置的超时计时器 确认丢失和确认迟到 B发送的确认丢失A重传数据B又收到数据会采取丢弃重复数据向A发送确认 。B对分组的确认迟到A会收到重复的确认丢弃即可B还会收到重复数据同样丢弃重传确认 连续ARQ协议 发送方维持发送窗口位于发送窗口的分组都可以连续发送出去不需要等待对方的确认可提高信道利用率连续ARQ协议规定发送方每收到一个确认就把发送窗口向前滑动一个分组的位置然后可以继续发送新覆盖的分组。接收方一般采用累计确认的方式接收方不必逐个发送确认而是可以在收到几个分组后对按序到达的最后一个分组发送确认这样就表示到这个分组为止的所有分组都正确收到了优点容易实现确认丢失也不必重传确定不能向发送方反映出接收方已经正确收到的所有分组的信息
4、提供全双工通信。TCP连接的两端都设有发送缓存和接收缓存用来临时存放双向通信的数据 5、面向字节流。“流”是指流入到进程或从进程流出的字节序列。TCP把应用程序交下来的数据堪称仅仅是一连串的无结构的字节流不知道字节流的含义。 TCP连接的端点叫做套接字或插口
端口号拼接到IP地址即构成了套接字
套接字的表示方法是在点分十进制的IP地址后面写上端口号中间用冒号或逗号隔开例192.3.4.5:80 套接字socket(IP地址: 端口号) 每一条TCP连接唯一地被通信两端的两个端点即两个套接字所确定即 TCP连接::{socket1, socket2} {(IP1: port1), (IP2, port2)} 首部格式 TCP报文段首部的前20个字节是固定的后面有4N字节是根据需要而增加的选项。最小20最大60 12、源端口和目的端口各占2字节。 3、序号4字节。范围是 [ 0 , 2 32 − 1 ] [0,2^{32}-1] [0,232−1]。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。序号字段值指的是本报文段所发送的数据的第一个字节的序号也称作“报文段序号” 4、确认号4字节。期望收到对方下一个报文段的第一个数据字节的序号。如B正确收到A发送的报文段序号字段为501数据长度为200则数据序号分别为501~700表明B正确收到A发送的到700为止的数据因此B期望收到A的下一个数据序号为701。 确认号N就表明到序号N-1为止的所有数据都已正确收到 5、数据偏移4位。指出TCP报文段的数据起始处距离TCP报文段的起始处有多远即指出TCP报文段的首部长度。 6、保留6位。保留为今后使用目前置为0 7、紧急URG当URG1表明紧急指针字段有效。它告诉系统此报文段中有紧急数据应尽快传送相当于高优先级的数据而不按原先排队顺序来传送。 8、确认ACK仅当ACK1时确认号字段才有效。当ACK0时确认号无效。TCP规定连接建立后的所有传送报文段都必须把ACK置1。 9、10、复位RST当RST1时表明TCP连接中出现严重差错必须释放连接然后再重新建立运输连接。RST置1还用了拒绝一个非法的报文段或拒绝打开一个连接。 11、同步SYN连接建立时用来同步序号。SYN1而ACK0时表明是一个连接请求报文段。如果对方同意建立连接响应报文段中使SYN1和ACK1。所以SYN置1表示这是一个连接请求或连接接受报文。 12、终止FIN用来释放一个连接。FIN1表示此报文段的发送方的数据已发送完毕并要求释放运输连接。 13、窗口2字节。是 [ 0 , 2 16 − 1 ] [0,2^{16}-1] [0,216−1]的整数。指发送本报文段的以方的接收窗口。窗口值告诉对方从本报问段首部中的确认号算起接收方目前运行对方发送的数据量。 14、检验和2字节。检验和字段检验的范围包括首部和数据两部分。 15、紧急指针2字节。仅在URG1时才有意义指出本报文段中的紧急数据的字节数。即使窗口为0也可以发送紧急数据。 16、选项长度可变最大40字节。
连接管理 三个阶段连接建立、数据传送、连接释放 连接建立 B的TCP服务器进程先创建传输控制块TCB准备接受客户端进程的连接请求然后就处于listen的状态。
A的TCP客户进程也是首先创建传输控制模块TCB然后向B发送连接请求报文。 TCB(Transmission Control Block)存储了每一个连接中的一些重要信息如TCP连接表到发送和接收缓存的指针到重传队列的指针当前的发送和接收序号等等。 1、A发送连接请求SYN1选择一个初始序号seqx 2、B收到连接请求如同意建立连接向A发送确认 SYN1ACK1seqy确认号ackx1 3、A收到B的确认向B给出确认。ACK1确认号acky1主机的序号seqx1
连接释放
1、A的应用进程先向其TCP发出连接释放报文段并停止发送数据主动关闭TCP连接。连接释放报文段首部FIN1sequ序号等于前面已传送过的数据的最后一个字节的序号加1。 2、B收到连接释放报文段后即发出确认确认号acku1seqv等于B前面已传送过的数据的最后一个字节的序号加1。 从A到B方向的连接就释放了
3、A收到B的确认后等待B发出连接释放报文段 B连接释放报文段FIN1acku1 4、A收到连接释放报文段A确认ACK1ackw1sequ1