Linux编程4.2 网络编程-协议

1、为什么要有协议?

  • 计算机网络中实现通信必须有一些约定,如对速率、传输代码、代码结构、传输控制步骤和出错控制等约定,这些约定即被称为通信协议。
  • 在两个节点之间要成功地进得通信,两个节点之间必须约定使用共同的“语言”,这些被通信各方共同遵守的约定、语言、规则被称为协议。
  • 在Internet中,最为通用的网络协议是TCP/IP协议。

2、网络分层模型

OSI模型与TCP/IP模型对应关系:

3、TCP/IP协议族

  • TCP/IP协议实际上是一个一起工作的通信家庭,为网际数据通信提供通路。
  • TCP/IP协议族大体上分为三部分
    1. Internet协议(IP)
    2. 传输控制协议(TCP)和用户数据报文协议(UDP)
    3. 处于TCP和UDP之上的一级协议专门开发的应用程序。它们包括:远程登录(TELNET)、文件传送协议(FTP)、域名服务(DNS)和简单的邮件传送程序(SMTP)等许多协议。

4、网络层协议

1)、Internet协议(IP)

该协议被设计成互联分组交换通信网,以形成一个网际通信环境。它负责在源主机和目的主机之间传输来自其较高层软件的称为数据报文的数据块,它在源和目的地之间提供非连接型传递服务。

2)、网际控制报文协议(ICMP)

实际上不是Ip层部分,但直接同IP层一起工作,报告网络上的某些出错情况。允许网际路由器传输差错信息或测试报文。

3)、地址识别协议(ARP)

ARP实际上不是网络层部分,它处于IP和数据链路层之间,它是在32位IP地址和48位局域网物理地址之间执行释放的协议。

4)、网络层其它数据路由协议

路由协议分析数据包的地址并且决定传输数据到目的电脑最佳路线。它们也可以把大的数据分成几部份,并且在目的地再把它们组合起来。IP处理实际传输数据。

ICMP(网络控制信息协议Internet Control Message Protocol)处理IP的状态信息,比如能影响路由决策的数据错误或改变。

RIP(路由信息协议Routing Information Protocol)它是几个决定信息传输的最佳路由路线协议中的一个。

OSPF(Open Shortest Path First)一个用来决定路由的协议。

ARP(地址解析协议Address Resolution Protocol)确定网络上一台电脑的数字地址。

DNS(域名系统Domain Name System)从机器的名字确定一个机号的数字地址。

RARP(反向地址解析协议Reverse Address Resolution Protocol)确定网络上一台计算机的地址,和ARP正好相反。

5、传输层协议

5.1 传输控制协议(TCP)

  • TCP(传输控制协议Transmission Control Protocol)是重要的传输层协议,TCP提供一种面向连接的、可靠的字节流服务
  • TCP协议的目的是允许数据同网络上的另外站点进行可靠的交换。它能提供端口编号的译码,以识别主机的应用程序,而且完成数据的可靠传输。
  • TCP协议具有严格的内装差错校验算法确保数据的完整性。
  • TCP协议是面向字节的顺序协议,这意味着包内的每个字节被分配一个顺序编号,并分配给每包一个顺序编号。

5.2 用户数据报文协议(UDP)

  1. UDP(用户数据报协议User Datagram Protocol)也是TCP/IP的传输层协议,它是无连接的,不可靠的传输服务。当接收数据时它不向发送方提供确认信息,它不提供输入包的顺序,如果出现丢失包或重份包的情况,也不会向发送方发出差错报文。
    1. 它允许在源和目的地站点之间传送数据,而不必在传送数据之间建立对话。
    2. 不使用TCP使用的端对端差错校验。
    3. 传输层功能全都发挥,而开销却比较低。
  2. 由于它执行功能时具有较低的开销,因而执行速度比TCP快。它多半用于不需要可靠传输的应用程序,例如网络视频点播和视频会议等。

5.3 二者平主要区别

5.3.1 传输控制协议(TCP)

  • 可靠的面向连接的传输层服务
  • 主要功能
    1. 监听输入对话建立请求
    2. 请求另一网络站点对话
    3. 可靠的发送和接收数据
    4. 适度的关闭对话

5.3.2 用户数据报文协议(UDP)

  • UDP提供不可靠的非连接型传输层服务
    1. 它允许在源和目的地站点之间传送数据,而不必在传送数据之间建立对话。
    2. 不使用TCP使用的端对端差错校验。
    3. 传输层功能全都发挥,而开销却比较低。
    4. 主要用于那些不要求TCP协议的非连接型的应用程序。例如,名字服务、网络管理、视频点播和网络会议等。

5.4 总结

  1. TCP以连接为基础,即两台电脑必须先建立一个连接,然后才能传输数据,事实上,发送和接受的电脑必须一直互相通讯和联系。
  2. UDP是一个无连接服务,数据可以直接发送而不必在两台电脑之间建立一个网络连接。它和有连接的TCP相比,占用带宽少,但是无法确认数据是否真正到达了客户端,而客户端收到的数据也不知道是否还是原来的发送顺序。

6、应用层协议

  • Telnet
    • 远程登陆服务
  • FTP和TFTP
    • 文件传送协议
  • SMTP
    • 简单的文件传送协议
  • DNS
    • 域名服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/453570.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL用法---MySQL Workbench创建数据库和表

1. 连接数据库 打开软件,点击左下角卡片,输入设置的数据库密码,勾选单选框 2. 了解主页面的组成部分 3. 创建数据库 先点击工具栏的创建按钮 再输入数据库名称 点击 Apply 创建 4. 创建数据表 展开数据库,在Tables上右键&…

如何在WordPress网站上设置多语言展示

在今天的全球化世界中,拥有多语言网站对于吸引更广泛的受众至关重要。前不就我们遇到Hostease的客户咨询我们的在线客服,他想要对他的wordpress网站支持多语言。我们提供给客户可以尝试以下的插件来支持多语言。 在本教程中,我们将逐步介绍如…

cpp qt 一个奇怪的bug

今天在用cpp qt的时候发现了一个奇怪的东西 这是我的源代码 #include "mywidget.h" #include <QPushButton>myWidget::myWidget(QWidget *parent): QWidget(parent) {QPushButton * btn1 new QPushButton;btn1->show();btn1->setParent(this);btn1-&g…

冥想与AI:打造定制的放松体验

如今&#xff0c;在浏览网页或社交网络时&#xff0c;您似乎很难对一条条心理健康信息无动于衷。遇到这种情况的可不只是您。当今不断变化的时代给人们平添压力&#xff0c;企业纷纷利用智能技术满足人们的减压需求&#xff0c;让人们的生活多一些平和从容。 冥想就是一种练习呼…

低代码开发能否降低程序员门槛?技能需求分析与优势评估揭秘!

一&#xff0e;什么是低代码开发平台 低代码开发平台和零代码开发平台是近几年时兴的一种新的程序开发方法。该模式的特征是可以使用用户界面、拖拽操作等方式快速构建应用软件软件&#xff0c;从而减少开发者的学习标准&#xff0c;使每个人都能变成开发者。 但它仍然是基于…

别再写传统简历了!AI简历5个超实用的功能,助你求职一臂之力(强烈建议收藏)

你们在制作简历时,是不是基本只关注两件事:简历模板,还有基本信息的填写。 当你再次坐下来更新你的简历时,可能会发现自己不自觉地选择了那个“看起来最好看的模板”,填写基本信息,却没有深入思考如何使简历更具吸引力。这其实是一个普遍现象:许多求职者仍停留在传统简历…

在使用qml的qmldir文件创建常用组件报错unknow component

解决方法&#xff1a;Qt Creator中的工具-->QML/JS-->重置代码模型 参考博文:QML自定义模块及qmldir的使用_同一资源文件目录下的qml模块使用-CSDN博客 不一样的地方是我给我的文件起了别名 以及我的qrc文件路径有前缀/qml 总体操作&#xff1a; 1.使用模块中的组件时…

ChatGPT提问技巧:可解释的软提示

ChatGPT提问技巧&#xff1a;可解释的软提示 可解释的软提示是一种既能控制模型生成的文本&#xff0c;又能为模型提供一定灵活性的技术。 具体做法是为模型提供一组受控输入和一些有关所需输出的附加信息。这种技术可以使生成的文本更具可解释性和可控性。 提示示例及其公式…

Mysql 学习(十七)事务隔离级别和MVCC

前提准备 首先创建一个表&#xff1a; CREATE TABLE hero (number INT,name VARCHAR(100),country varchar(100),PRIMARY KEY (number) ) EngineInnoDB CHARSETutf8;INSERT INTO hero VALUES(1, 刘备, 蜀);事务隔离级别 mysql 是一个 客户端 和 服务器架构的软件&#xff0c…

【Linux操作系统】:Linux进程概念(2)

一、Z(zombie)-僵尸进程 1.僵尸进程概念 故事 张三每天都有跑步的习惯&#xff0c;这一天他和往常一样跑步&#xff0c;跑了两三圈&#xff0c;突然跑在它前面的一个人倒在地上不动了&#xff0c;作为热心市民张三赶紧报警并且拨打120。很快120就来了&#xff0c;但是没过几分…

C#、C++、Java、Python 选择哪个好?

作者&#xff1a;网博汇智 链接&#xff1a;https://www.zhihu.com/question/298323023/answer/2789627224 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 一个好的程序员不能把自己绑定在一种语言上&#xff0c;不…

摄像机内存卡删除的视频如何恢复?恢复指南来袭

在现代社会&#xff0c;摄像机已成为记录生活、工作和学习的重要设备。然而&#xff0c;随着使用频率的增加&#xff0c;误删或意外丢失视频的情况也时有发生。面对这样的情况&#xff0c;许多用户可能会感到无助和困惑。那么&#xff0c;摄像机内存卡删除的视频真的无法恢复吗…

X小蓝鸟,已破!支持批量下载且速度飞快

从马斯克把小蓝鸟改名之后&#xff0c;最大的感觉就是域名更好记了&#xff0c;对于软件爱好者来说&#xff0c;可以关注软件最新消息&#xff0c;许多软件开发者都是在上面更新动态。 本期给大家分享一款可以下载X上的图片/视频工具X-Spider&#xff0c;它的特点是开源免费&am…

愿原力与您同在:电影魔术背后的AI

在《星球大战》系列影视作品的经典配乐中&#xff0c;无论您喜欢《酒吧乐队》还是喜欢《帝国进行曲》&#xff0c;我们都想说“愿原力与您同在”。5月4日“星战日”是个非正式节日&#xff0c;旨在纪念《星球大战》系列影视作品留给我们的遗产及其对现代电影制作不可磨灭的影响…

使用webpack打包ts代码

通常情况下&#xff0c;实际开发中需要使用构建工具对代码进行打包&#xff0c;TS也可以结合构建工具进行使用&#xff0c;以webpack为例&#xff0c;介绍如何结合构建工具使用TS。 基本功能实现步骤&#xff1a; 项目初始化&#xff0c;生成package.json&#xff1a;npm ini…

汉诺塔问题代码写法的详细解析

汉诺塔游戏规则&#xff1a; 规则&#xff1a; 汉诺塔问题是一个经典的问题。汉诺塔&#xff08;Hanoi Tower&#xff09;&#xff0c;又称河内塔&#xff0c;源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上按照大小顺序摞着…

自动化运维工具 ---------------Ansible

一、Ansible 发展史及功能 作者&#xff1a;Michael DeHaan&#xff08; Cobbler pxe kikstar 与 Func 作者&#xff09;ansible 的名称来自科幻小说《安德的游戏》中跨越时空的即时通信工具&#xff0c;使用它可以在相距数光年的距离&#xff0c;远程实时控制前线的舰队战斗2…

Linux:好用的Linux指令

进程的Linux指令 1.查看进程信息 ​​​​ps ajx | head -1 && ps ajx | grep 进程名创建一个进程后输入上述代码&#xff0c;会打印进程信息&#xff0c;当我们在code.exe中写入打印pid&#xff0c;ppid&#xff0c;这里也和进程信息一致。 while :; do ps ajx | he…

探索:C++继承中虚表与虚基表的内存存储

探讨&#xff1a;菱形虚拟继承的虚基表和虚表 在继承和多态里&#xff0c;总是能听到虚表、虚基表这样的词汇&#xff0c;没有洞悉其根本的人很容易将它们混淆&#xff0c;因此&#xff0c;我们对这两个“虚”“表”进行实践&#xff0c;来更好地理解它们。 通俗些说&#xf…

AI新工具(20240313) 世界上第一个完全自主的AI软件工程师Devin 已经开始接外包了;又一个开源本地知识库问答系统

1: Cognition AI Devin 世界上第一个完全自主的AI软件工程师Devin 已经开始接外包了 Devin是世界上第一个完全自主的AI软件工程师&#xff0c;具备长期推理和规划的能力&#xff0c;能够执行复杂的工程任务&#xff0c;包括学习、修复错误、与用户实时合作等。Devin可以学习并…