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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 《AR与VR开发实战》——2.8 云识别

    《AR与VR开发实战》——2.8 云识别

    2022年3月2日
    47
  • 贴片电阻封装与功率对照表_贴片电阻能承受多大电流

    贴片电阻封装与功率对照表_贴片电阻能承受多大电流注意事项:设计和使用贴片电阻时,最大功率不能超过其额定功率,否则会降低其可靠性。一般按额定功率的70%降额设计使用。也不能超过其最大工作电压,否则有击穿的危险。一般按最高工作电压的75%降额设计使用。当环境温度超过70°C,必须按照降额曲线图降额使用。国内贴片电阻的命名方法1、5%精度的命名:RS-05K102JT2、1%精度的命名:RS-05K1002FTR-表示电阻S-表示功率0402是1/16W、0603是1/10W、0805是1/8W、1206是1/4W、1210是1

    2022年8月21日
    14
  • FASTAI-fastai 学习笔记——lesson1[通俗易懂]

    FASTAI-fastai 学习笔记——lesson1[通俗易懂]fastai学习笔记——lesson10-重要的参考网站课程一详细笔记(https://github.com/hiromis/notes/blob/master/Lesson1.md)课程一视频(https://www.bilibili.com/video/av41718196/?p=1)课程一源码(https://github.com/fastai/course-v3/blob…

    2025年10月3日
    3
  • 渗透测试工具对比表下载_web渗透测试工具大全

    渗透测试工具对比表下载_web渗透测试工具大全编号 工具名称 工具介绍 适用范围 优点 缺点 1 Metasploit Metasploit是一种框架,拥有庞大的编程员爱好者群体,广大编程员添加了自定义模块,测试工具可以测试众多操作系统和应用程序中存在的安全漏洞。人们在GitHub和Bitbucket上发布这些自定义模块。与GitHub一样,Bitbucket也是面向编程项目的在线软件库。Saez…

    2022年8月12日
    6
  • Windows ping TCP端口工具之tcping「建议收藏」

    Windows ping TCP端口工具之tcping「建议收藏」ping这个小工具大家都非常熟悉,但是他不能ping端口,当我们需要知道目的地址的某端口是否开放时,这时需要用到这个tcping小工具了,Windows没有自带这个小工具,需要自己下载下来,放到指定目录里面。下载地址:点击打开链接X64下载链接放到C:\Windows\System32这个文件夹下现在在测试一下…

    2022年6月23日
    152
  • RS232电平和TTL电平

    结论:TTL电平和RS232电平,无论是在电压范围还是在极性上(RS232是负逻辑)都有很大的不同。显然,这两种电平是不能直接相连的。为了把单片机的TTL电平转换成RS232电平,通常我们需要一个专用的转换芯片,比如SP3232。RS232是工业上常用的串口标准,无论是PLC的RS232串口模块,还是工控机的串口(COM),输出的电平都称为RS232电平。同时我们知道这些模块的内部控制单元都是…

    2022年4月17日
    52

发表回复

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

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