第13章 网络 Page738~741 13.8.3 TCP/UDP简述

这篇具有很好参考价值的文章主要介绍了第13章 网络 Page738~741 13.8.3 TCP/UDP简述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

libcurl是C语言写成的网络编程工具库,asio是C++写的网络编程的基础类型库

libcurl只用于客户端,asio既可以写客户端,也可以写服务端

libcurl实现了HTTP\FTP等应用层协议,但asio却只实现了传输层TCP/UDP等协议。

在学习http时介绍过“OSI网络七层”协议,但实际应用更多的是“TCP/IP五层协议”,在后者的分层中,HTTP和FTP均为在TCP均为在TCP之上实现的协议,如下图13-19所示

第13章 网络 Page738~741 13.8.3 TCP/UDP简述,《白话C++》学习,白话C++》第13章 网络  asio,网络,tcp/ip,c++,网络协议,udp

如图13-19所示,HTTP和FTP基于TCP实现,HTTP针对网页内容传输的应用,FTP针对文件数据传输的应用,分别定义非常不同的连接、交互方式以及报文格式。

假设我们想写一个下载新浪网页的客户端,使用libcurl,它已经帮我们实现并封装了HTTP客户端的相关工作,比如如何打包请求报文,如何解析服务端返回的报文等;但如果改为使用 asio,这一切都需要我们编写代码。

网络通信协议存在分层,和写程序时进行分层设计的原因相同,都是为了解决“通用”和“定制”之间的矛盾。

上层协议用于满足个性通信,下层协议用于满足共性通信

我们可以将TCP协议理解为是在马路行车需要的约定和技巧,比如靠右行驶,红灯停,绿灯行,夜间过十字路口打双闪……

那HTTP协议可以理解为在马路上驾驶自动档小轿车需要的约定和技巧,而FTP就是在马路上驾驶有挂斗的大货车需要的约定和技巧。

TCP和UDP都是传输层的协议,全称分别是“Transmission Control Protocol(传输控制协议)”和“User Datagram Protocol(用户数据报协议)”。二者重要的差别在于基于前者(TCP)的网络通信被称为“有连接”的通信,基于后者(UDP)的被称为“无连接”的通信。

可以用“电话”比喻“有连接”通信,用“信件”比喻“无连接”通信。

对于“有连接”通信,自然就有建立连接和断开连接的过程。TCP协议建立连接需要由客户端发起,服务端接受(当然也可以拒绝,从而无法建立连接)。为了在复杂的网络环境下保障建立连接的正确性,二者之间需要经过三次报文收发,俗称“三次握手”。

一旦连接建立,双方想痛快断开,则需要“四次握手”。当然会有意外情况造成连接硬生生断开,比如网线被拔了。不管怎样,所有未经四次交互确认的连接断开,都是“不优雅”的断开,相对的,正常断开的过程被称为“优雅的断开”。

不仅建立连接需要有确认,每一次上层应用数据的收发,

有连接的通信过程,都会有确认机制,在没有收到对端(peer)的确认之前,本地端(local)不会发新数据,最多是等到超时重发。

无连接的通信则不一样,发送方可以可劲儿地发,不管也管不了接收方有没有收到。

当然,如有需要,上层应用可以在无连接的传输层协议之上,尽量模拟有连接确认的重发等机制。但这真的是非常难喝繁琐的,所以当我们的应用确实很在意数据收发的可靠性,应该尽量使用TCP协议

【课堂作业】了解学习TCP/UDP的更多知识:

①TCP/UDP更多关于有连接、无连接的区别;

②二者的更多区别以及各自适用的场景;

③TCP建立和断开连接的过程;

④二者具体的报文格式;

⑤TCP之上的更多协议。

⑥什么叫IP地址,什么叫域名地址;

⑦网卡、路由器、防火墙等的作用和基本工作原理。

不管是UDP还是TCP通信,通信双方都可以分为客户端和服务端,其中客户端通常指通信的发起者。

对于TCP,它有明确的区分方法,即发起连接的一方。

对于UDP,客户端和服务端的区分并不明显,简单但不精确的理解是:将第一次发送报文的一方当做客户端。

区分客户和服务端的另一方法,服务端是可以以一对多的一方,典型的如TCP中服务端可以接受并同时处理多个连接。

注意,这里提的客户端和服务端都是指网络编程中的独立模块,而非对应到通信双方的进程。

一个进程可能既是通信的客户端,也是通信的服务端,一个进程也可以包含多个通信的客户端或服务端。

现实网络还存在另外一个复杂性,即网络和网络之间的可见性和连通性。

简单的两个结论:服务端必然要部署在客户端可以主动访问的地方,但客户端可以隐藏在服务端可能看不到摸不着的地方。理解这一事实的正确方法是上网查阅更多有关“互联网”“局域网”和“广域网”等知识。

TCP服务端必须可见,因此服务端必须有一个客户端可到达的地址通常是指一个主机地址和一个端口主机地址通常是一个域名或一个IP地址,用于指向一台主机。端口则是一个数字编号,有效范围1~65535,用于区分同一台主机内不同的服务端。

可以把服务器想象成一座楼(假设楼栋编号为女78号),有一面墙总共挖了65535个带着编号的窗(端)口,各个服务程序支着大大的耳朵贴近特定号码的端口上监听。

“监听”在此处的翻译是listen,和select一样是一个socket函数。服务端程序一开始监听,就算是准备就绪了。

客户端就是对面的一堆男生楼。开始有人在喊:“女78楼80号端口的王美丽,我是男25楼520号的张有钱,我要和你申请建立连接,请接收。”

女方心里暗自冷笑,“有钱就像连接美丽?”女方拒绝后,男方再三尝试后终于放弃。接着传来“女78楼80号端口的王美丽,我是男680楼52013号的付二袋,我要和你申请建立连接,请接收。”王美丽欣然接受连接。

“接受”在此处的翻译是accept,也是一个socket函数。文章来源地址https://www.toymoban.com/news/detail-828553.html

到了这里,关于第13章 网络 Page738~741 13.8.3 TCP/UDP简述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 简述 TCP 和 UDP 的区别以及优缺点和使用场景?

    1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。Tcp通过校验和,重传控制,序号标识,

    2024年02月11日
    浏览(26)
  • 面试-快速学习计算机网络-UDP/TCP

    区别: 应用层,表示层,会话层 合并为了 应用层 数据链路层 和 物理层 合并为了 网络接口层 总结: 1 . TCP 向上层提供 面向连接的可靠服务 ,UDP 向上层提供 无连接不可靠服务 。 2. UDP 没有 TCP 传输可靠,但是可以在实时性要求高的地方有所作为。 3. 对数据准确性要求高,

    2024年02月12日
    浏览(27)
  • 【Java学习笔记】 68 - 网络——TCP编程、UDP编程

    https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter21/src 目录 项目代码 网络 一、网络相关概念 1.网络通讯 2.网络 3.IP地址 4.域名 5.端口号 6.网络通讯协议 TCP协议:传输控制协议 UDP协议: 二、InetAddress类 1.相关方法 三、Socket 1.基本介绍 2.TCP网络通信编程 基本介绍 应用案例

    2024年02月04日
    浏览(31)
  • C++开发基础之网络编程WinSock库使用详解TCP/UDP Socket开发

    Winsock是Windows操作系统提供的用于网络编程的API库。它是Windows Sockets的简称,也就是套接字库。Winsock可以让开发人员使用TCP/IP协议族中的各种协议,如TCP、UDP等,在Windows平台下进行网络编程。 Winsock提供了一组函数和数据结构,这些函数和数据结构可以让开发人员创建和管理

    2024年01月23日
    浏览(39)
  • SCTP, TCP, UDP, IP, ICMP都在哪一层?(TCP/IP网络通信协议学习)

    TCP/IP网络通信协议最早是由 罗伯特·卡恩 (Robert E. Kahn)和 文顿·瑟夫 (Vinton G. Cerf)于1972年提出的,它是一个实际的协议栈。 OSI七层网络通信协议最早是 由国际标准化组织 (ISO)于1977年提出的,它是一个理论模型。TCP/IP网络通信协议由于其简单性和实用性,成为 事实上

    2024年01月22日
    浏览(37)
  • Java-Java基础学习(2)-网络编程-TCP-UDP

    2.1. 通信协议 TCP、UDP对比 TCP 打电话 连接,稳定 三次握手,四次挥手 客户端、服务端 传输完成,释放连接,效率低 UDP 发短信 不连接,不稳定 客户端,服务端,没有明确的界限 不管有没有准备好,都可以发给你 导弹 DDOS:洪水供给!(饱和攻击) 2.2. Tcp上传测试 总结:

    2024年04月09日
    浏览(36)
  • 【网络编程】网络通信基础——简述TCP/IP协议

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得,欢迎大家在评论区交流讨论💌 ip地址简单来说就是用来描述网络上一个设备的所在位置。 端

    2024年02月04日
    浏览(42)
  • 树莓派学习:建立socket进行网络通信+tcp+udp+端口+字节序+socketAPI+地址转换API+聊天对话框实战

    目录 socket套接字网络通信学习 数据协议 tcp udp ip地址 端口 字节序 步骤  API介绍 地址转换API 实战  聊天对话框 服务器  运行时后面要传IP地址和端口 客户端   运行时后面要传IP地址和端口 socket是网络通信,通信的数据协议有http、tcp、udp等等,简单来说就是传输数据的格式

    2024年02月05日
    浏览(42)
  • 第13章网络,Page672~674页,带进度的FTP下载的易错点及程序书写顺序

    网络篇,书上672~674页,带进度的FTP下载的的实例程序,写了两遍,才写成功,而且第二遍写的时候,对易错的地方有所感悟,写篇心得记下来。 首先上代码: 易错点分析: 65行,要注意SIZE后面要有个分号 62,63, 107,108行,要注意username和password不要忘了使用c_str()转化成“C”

    2024年01月24日
    浏览(25)
  • 网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解

    目录 前文链接(系列助学, 也为后文学习做铺垫, 可按需读取) 一. 再谈HTTP再理解 二. HTTP对比学习HTTPS HTTP和HTTPS的区别如下: 三.TCP协议  (三次握手四次挥手细节过程理解在之前的博文中有详细图解) tcp缓冲区概念的引入  (解释流量控制): 确认应答(ACK)机制的理解 (编序号)

    2023年04月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包