TCP和UDP协议的区别_朋友关系

TCP和UDP协议的区别_朋友关系在解释两者之间的关系之前,我们必须从宏观的角度了解互联网的整个交互模型。因为当了解互联网在大体上是如何运作时,我们才能了解HTTP和TCP存在的意义,包括他们所要解决的问题是。 (此图来自Udacity的网络协议教程)互联网的模型被分为4层,从上至下每一层都依赖其底层协议。换言之,Application(应用层)的协议操作成功的前提是Transport(运输层)的存在。没有运输层就没有应…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在解释两者之间的关系之前,我们必须从宏观的角度了解互联网的整个交互模型。因为当了解互联网在大体上是如何运作时,我们才能了解HTTP和TCP存在的意义,包括他们所要解决的问题是。

TCP和UDP协议的区别_朋友关系 (此图来自Udacity的网络协议教程)

互联网的模型被分为4层,从上至下每一层都依赖其底层协议。换言之,Application(应用层) 的协议操作成功的前提是Transport(运输层)的存在。没有运输层就没有应用层。好比没有任何道路的前提下就没有汽车可以行驶。而这种层次上的抽象是让开发者在设定某个层面的协议时不去考虑其他层面的问题。比如我要在运输层设计协议时,我唯一要考虑的是如何将数据从一台计算机传到另外一台,我需要着重的是其稳定性和效率。在解决运输层的问题时我不需要考虑传达的数据是什么类型或内容,因为这样的问题是应用层索要操心的。在上图中可以看到HTTP和TCP是存在于不同层面的网络协议,所以他们之间必然存在着依赖关系。确切的说是HTTP所设定的所有规则都建立在一个假设之上,那就是运输层的协议有在正常运作。

那HTTP和TCP分别代表了什么呢?

HTTP的责任是去定义数据,在两台计算机相互传递信息时,HTTP规定了每段数据以什么形式表达才是能够被另外一台计算机理解。而TCP所要规定的是数据应该怎么传输才能稳定且高效的传递与计算机之间。

HTTP的核心概念

除了HTTP存在于应用层之外,该协议还有5个特点。

1. HTTP的标准建立在将两台计算机视为不同的角色:客户端和服务器。客户端会向服务器传送不同的请求(request),而服务器会对应每个请求给出回应(response)。

2. HTTP属于无状态协议(Stateless)。这表示每一个请求之间是没有相关性的。在该协议的规则中服务器是不会记录任何客户端操作,每一次请求都是独立的。(记录用户浏览行为会通过其他技术实现)

3. 客户端的请求被定义在几个动词意义范围内。最长用到的是GET和POST,其他动词还包括DELETE, HEAD等等。

4. 服务器的回应被定义在几个状态码之间:5开头表示服务器错误,4开头表示客户端错误,3开头表示需要做进一步处理,2开头表示成功,1开头表示在请求被接受处理的同时提供的额外信息。

5. 不管是客户端的请求信息还是服务器的回应,双方都拥有一块头部信息(Header)。头部信息是自定义,其用途在于传递额外信息(浏览器信息、请求的内容类型、相应的语言)。

TCP的核心概念

在HTTP的规范内,两台计算机的交互被视为request和response的传递。而在实际的TCP操作中,信息传递会比单纯的传递request和response要复杂。通过TCP建立的通讯往往需要计算机之间多次的交换信息才能完成一次request或response。

TCP的传输数据的核心是在于将数据分为若干段并将每段数据按顺序标记。标记后的顺序可以以不同的顺序被另一方接收并集成回完整的数据。计算机对每一段数据的成功接收都会做出相应,确保所有数据的完整性。

TCP在传递数据时依赖于实现定义好的几个标记(Flags)去向另一方表态传达数据和连接的状态:

* F : FIN – 结束; 结束会话
* S : SYN – 同步; 表示开始会话请求
* R : RST – 复位;中断一个连接
* P : PUSH – 推送; 数据包立即发送
* A : ACK – 应答
* U : URG – 紧急
* E : ECE – 显式拥塞提醒回应
* W : CWR – 拥塞窗口减少

也是基于这些标志TCP可以实现三次(three ways handshake)和四次握手 (four ways tear down)。三次握手是初步建立连接的机制,而四次握手则是断开链接。两者之间大致操作是一样的,A发出建立链接(SYN)或者断开链接(FIN)的请求,B认可(ACK)其请求然后发出同样的请求给A并等待A的认可。在双方认可后,链接正式成立或者断开。

这里有两个问题:

1. 为什么A发出请求并且得到认可后B还有重复同样的动作?

在建立连接的过程中SYN标记代表的是一个随机序列号,因为当文件被切断的时候并不是从0或者1开始标记每段的顺序,所以双方都需要通过传递SYN来告知文件片段的第一个序列是多少号。

2. 为什么同样的机制,建立链接和断开链接需要握手的次数不同?

三次和四次握手的区别在于,在建立连接时,B的ACK和SYN会一起发送回A,而在断开链接时因为B发送ACK之后还要做其他处理后才能返回FIN,,因此将两步拆开。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191256.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • list,tensor,numpy相互转化

    list,tensor,numpy相互转化1.1list转numpyndarray=np.array(list)1.2numpy转listlist=ndarray.tolist()2.1list转torch.Tensortensor=torch.Tensor(list)2.2torch.Tensor转list先转numpy,后转listlist=tenso…

    2022年10月19日
    8
  • STM32F103驱动GT911

    STM32F103驱动GT9110x00引脚连接://SCL——-PB10//SDA——-PB11//INT——–PB1//RST——–PB2IIC的SCL与SDA需要接上拉电阻!0x01模拟IIC:在模拟IIC的头文件中:定义所需的IO操作宏://IO操作函数#defineIIC_SCLPBout(10)//…

    2022年6月30日
    33
  • 从硬盘上安装Fedora12

    从硬盘上安装Fedora12一、引言Fedora12的liveCD:Fedora-12-i686-Live.iso,至今未硬盘安装成功。在引导过程中,报此类错误:[drm:drm_mode_rmfb]triedtoremoveafbthatwedidntown无奈之下,只好下载Fedora12的DVD版:Fedora12-i386-DVD.iso文件比较大,2G多一些。

    2026年2月2日
    4
  • c++开发面试问题(java面试app)

    面试智力题1、25皮马,5个赛道,求经过几场比赛,可以得到跑得最快的5皮马1)先把25皮马分成5组,分别每组进行比赛:(5场)A1A2A3A4A5、B1B2B3B4B5、C1C2C3C4C5、D1D2D3D4D5、E1E2E3E4E5。假设每组比赛后,结果如上所示。2)把每组最快的马拿出来进行比赛:(1场)A1B1…

    2022年4月10日
    43
  • linux基础-linux和unix的区别[通俗易懂]

    linux基础-linux和unix的区别[通俗易懂]有时候我们对天天使用的Linux指令,只知道怎么用,却分不清概念用法区别,我觉得很有必要整理整理大家熟视无睹的一些linux概念区别。首先说说unix和linux的区别:linux和unix的最大的区

    2022年8月1日
    5
  • pta 列车调度_数据结构/PTA-列车调度/栈/数组

    pta 列车调度_数据结构/PTA-列车调度/栈/数组火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?输入格式:输入第一行给出一个整数N(2≤…

    2022年7月26日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号