浅谈传输层协议TCP和UDP

在当今因特网的层次结构中,传输层的协议主要有两种,其一为Transmission Control Protocol,即TCP;其二为User Datagram Protocol,即UDP。

1、TCP service model

TCP是使用最广泛的传输层通讯协议,它在两个端系统之间建立连接,并通过两端的状态机来维护连接,为应用层提供可靠的字节流传输服务。

(1)TCP是面向连接的

  在传输实际数据的字节流之前,两个端系统的TCP会通过三次握手来确定建立连接,即所谓的3-way handshake

  

  在上图所示的情形中,主机A试图与主机B建立TCP连接,A会首先发一个SYN(Synchronize)信号和一个用于字节流识别的基数到B申请建立连接。如果B同意,那么B会返回一个SYN信号和A之前所发的基数,以及一个ACK(acknowledgement)表示同意建立连接并确认基数。这时,A会回复一个ACK信号到B,表示接受。至此,两端表征连接状态的状态机被初始化,双向的连接就已经建立起来,就等待字节流的传递。

  在数据传输完成之后,并且TCP连接被要求解除(teardown),两端的传输层会通过所谓的四次挥手来解除连接关系。

  

   主机A认为它不会再向B发送数据之后,请求关闭连接,A会向B发送一个FIN(Finish)信号。B接到这个信号后,会回复ACK到A,这时B会关闭从A来的数据流。A——>B的数据流被关闭,但是B可能还有数据要发往A,所以B还会发送数据到A,直到发送完成。此后,B会发送一个FIN到A申请终结连接,A会发送一个ACK表示同意。至此,A、B间的双向连接被关闭。至于A、B知道什么时候该发什么信号,是由其背后的状态机决定的。连接解除后,两端的状态机也被删除。

(2)TCP字节流的基本单元——TCP报文段(Segment)

  根据网络中的分组交换原则,TCP字节流被划分成多个TCP报文段。一个TCP报文段,主要有首部和数据两部分。首部的各个域描述了该报文段的性质,数据则是来自应用层的数据,如HTTP请求。TCP报文段生成之后,将会交付网络层进行下一步处理。

  TCP报文段的结构:

  源端口和目标端口的作用:发送数据和回复信息的目标位置

  序列号和确认序列号:序列号用于检查传输数据的完整性,并用于按序重构数据;确认序列号用于表示接收方正在等待的下一个数据序列号,以保证每个数据段都被接收。

  求和检查(Checksum):用于检查数据是否出现错误,如果有会要求重新发送。

  窗口规模:用于流量控制,避免接收方被淹没。

(3)可靠的数据传输保证机制

  上述重点字段保证的数据确保递交到位机制、数据正确性检查机制、流量控制机制,还有通过多字段保证的TCP连接身份识别机制。

2、UDP service model

  与TCP比较,UDP的服务模型要简单很多,以至于被认为是只指定传输端口的传输层协议。

  UDP不会建立连接,不保证数据送达(忽略丢包),也没有Sequence number来保证数据的正确顺序。它只有单向的传输,而不会有双向的交流。

  UDP最大的优点是简单,那些不需要确保递交、流量控制、按需递交的应用,通常会选择UDP作为其传输层协议。如DNS。

(3)小结

  这篇随笔浅谈了一下传输层的两个协议——TCP和UDP,说到了它们的性质和运行机制,各自的优势。

  总的来说,TCP是面向连接的传输层协议,它通过诸多字段和双向交流,来给应用层提供可靠的字节流传输服务。在传输数据之前,要通过三次握手建立状态机和连接;传输数据之后,要通过四次挥手解除连接。为了将所有数据传输到目的地,TCP通常会重新发送数据段。而UDP则更加简单,只负责将数据段递交给网络层,没有建立连接的过程,不会去维护状态。

  才疏学浅,还有待进步,欢迎大家交流。

  

原文地址:https://www.cnblogs.com/wenmingCode/p/10321846.html

时间: 2024-08-06 20:21:09

浅谈传输层协议TCP和UDP的相关文章

TCP/IP中的传输层协议TCP、UDP

TCP提供可靠的通信传输,而UDP则常用于让广播和细节控制交给应用的通信传输. 传输层协议根据IP数据报判断最终的接收端应用程序. TCP/IP的众多应用协议大多以客户端/服务端的形式运行.客户端是请求的发起端,而服务端表示提供服务的意思,是请求的处理端.因此,作为服务端的程序有必要提前启动,准备接收客户端的请求.传输协议根据接收数据中的目标端口号识别目标处理程序. TCP.UDP比较 TCP提供可靠性传输.实行顺序控制或重发控制机制,还有流量控制和拥塞控制,提高网络利用率. UDP是不具备可靠

传输层协议TCP和UDP分析

分析所用软件下载:Wireshark-win32-1.10.2.exe 阅读导览 1. 分析应用TCP协议,以及TCP链接管理 2. 分析应用UDP协议 分析要求 (1)TCP部分: 学习3CDaemon FTP 服务器的配置和使用 设计应用以获取tcp报文 分析tcp报文的格式与内容(分析至少5个报文,并理解它们之间的关系) 分析TCP 连接建立的 "三次握手"过程,找到 对应的报文 (2)UDP部分: 学习Cisco TFTP Server的配置和使用 设计应用以获取udp报文 分

可靠的传输层协议——TCP协议

TCP协议 TCP协议工作在传输层,虽然它与UDP的下一层都是IP但是它却和UDP的效果完全不同,它是一种可靠的传输层协议 一.TCP协议封装 TCP数据段头部共有20个字节,包括16位的源端口号,16位的目的端口号,端口号与前面各层中的协议类型相似,都指的是上层将要交给谁,这个端口号就是主机上一个进程所绑定的一个入口,所以通过端口号和IP就能找到唯一主机的唯一进程. 32位序号:用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节.如果将字节流看作在两个应用

数据通讯与网络 第五版第24章 传输层协议-TCP协议部分要点

上一博客记录了UDP协议的关键要点,这部分记录TCP协议的关键要点. 24.3 传输控制协议(TRANSMISSION CONTROL PROTOCOL) TCP(Transmission Control Procotol )协议是一个面向连接,可靠的协议.TCP为了提供面向连接的服务,专门定义了连接创建,数据传输.连接终止阶段.TCP使用GBN和SR协议来提供可靠性.为了实现可靠性这个目标,TCP使用检验和来进行误差控制.重传来处理数据包丢失和冲突.同时还利用了应答和计数机制.在本节,首先讨论

传输层的TCP和UDP协议

作者:HerryLo 原文永久链接: https://github.com/AttemptWeb... TCP/IP协议, 你一定常常听到,其中TCP(Transmission Control Protocol)称为 传输控制协议,IP(Internet Protocol) 称为网际协议. 事实上TCP/IP协议,是一个协议族,是一个协议的集合. TCP/IP协议,定义了一整套规则.它定义整个互联网如何连接,如何通信,如何协商的最基础规则. TCP/IP协议分为五层,分别是应用层.传输层.网络层

前端工程师如何理解 TCP/IP 传输层协议?

网络协议是每个前端工程师都必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别. TCP/IP网络模型 计算机与网络设备要相互通信,双方就必须基于相同的方法.比如,如何探测到通信目标.由哪一边先发起通信.使用哪种语言进行通信.怎样结束通信等规则都需要事先确定.不同的硬件.操作系统之间的通信,所有的这一切都需要一种规则.而我们就把这种规则称为协议(protocol). TCP/IP 是互联网相关的各类协议族的总称,比如:T

传输层协议解析

对于每一种应用层协议想要进行通信,就必须通过IPC机制进行实现,Socket(套接字)是IPC的一种实现,允许位于不同主机(甚至同一主机)上不同进程之间进行通信:数据交换.套接字有三种: SOCK_STREAM:tcp套接字     SOCK_DGRAM:udp套接字     SOCK_RAW: 裸套接字(不基于tcp和udp直接基于ip地址实现进程间通信)其实套接字就是ip地址和        端口的组合,ip地址我相信不需缀余,我们分析一下传输层的端口: tcp:传输控制协议,面向连接的协议

传输层协议(TCP/UDP)介绍

一,TCP/IP协议族的传输层协议概况:1,TCP:传输控制协议2,UDP:用户数据报协议二,TCP/UDP协议详解:1,TCPa.TCP是面向连接的,可靠的进程到进程通信的协议 :TCP提供全双工服务,即数据可在同一时间双向传输.b.TCP报文段:TCP将若干个字节构成一个分组.叫报文段.TCP报文段封装在IP数据报中.数据段详解:.序号(32):发送端为每个字节进行编号,便于接收端正常重组.确认号(32):用于确认发送端的信息.窗口大小(16):用于说明本地可接收数据段的数目,窗口大小是可变

传输层:TCP UDP SCTP

总图 虽然协议族被称为“TCP/IP”,但除了TCP和IP这两个主要协议外,还有许多其他成员.图2-1展示了这些协议的概况. 图2-1中同时展示了IPV4和IPV6.从右向左看该图,最右边的5个网络应用在使用IPV6,随后的6个网络应用使用IPV4. 最左边名为tcpdump的网络应用或者使用BSD分组过滤器(BPF),或者使用数据链路层提供者接口(DLPI)直接与数据链路层进行通信.处于其右边所以9个应用下面的虚线标记为API,它通常是套接字或XTI.访问BPF或DLPI的接口不使用套接字或X