五十二、linux 编程——网络介绍
52.1 网络介绍
- 使用远程资源
- 共享信息、程序和数据
- 分布处理
52.1.1 协议的概念
- 计算机网络中实现通信必须有一些约定,如对速率、传输代码、代码结构、传输控制步骤和出错控制等约定,这些约定即被称为通信协议
- 在两个节点之间要成功地进行通信,两个节点之间必须约定使用共同的“语言”,这些被通信各方共同遵守的约定、语言、规则被称为协议
- 在 Internet 中,最为通用的网络协议是 TCP/IP 协议
52.1.2 网络分层模型
- 应用层:制定完成某些用户初始化任务的方法。应用协议通常由应用开发者设计和实现。如 FTP、skype灯
- 表示层:指定对应用的数据表示格式和转换规则的方法
- 会话层:指定由多个连接组成一个通信回话的方法。包括关闭连接、重启连接和检查点进程
- 传输层:指定运行在相同计算机系统中的多个程序之间的连接或关联的方法,如果在其他地方没有实现,本层可能实现可靠的传输
- 网络层:指定经过潜在不同类型链路层网络的多跳通信方法。对于分组网络,它描述了抽象的分组格式和标准的地址结构
- 链路层:指定经过单一链路通信的方法,包括多个系统共享同一介质时的“介质访问”控制协议。本层通常包括差错检测和链路层地址格式
- 物理层:指定连接器、数据速率和如果在某些介质上进行位编码。本层也描述了底层的差错检测和纠正、频率分配。
52.1.3 OSI模型与TCP/IP模型对应关系
51.2 TCP/IP 协议族
数据包封装:
51.2.1 协议族介绍
- TCP/IP 实际上是一个一起工作的通信家族,为网际数据通信提供通路
- TCP/IP 协议族大体上分为三部分
- Internet 协议(IP)
- 传输控制协议(TCP)和用户数据报文协议(UDP)
- 处于 TCP 和 UDP 之上的一组协议开发的应用程序。它们包括:
- 远程登录:TELNET
- 文件传送协议:FTP
- 域名服务:DNS
- 简单的邮件传送程序:SMTP
- 等其他协议
51.2.2 网络层协议
- Internet 协议(IP)
- 该协议本设计成互联分组交换通信网,以形成一个网际通信环境。它负责在源主机和目的主机之间传输来自其较高层软件的称为数据报文的数据块,它在源和目的地之间提供非连接型传递服务。
- IP 的主要目的是为数据输入/输出网络提供基本算法,为高层协议提供无连接的传送服务。这意味着在 IP 将数据递交给接收站点以前不在传输站点和接收站点之间建立对话(虚拟链路)。它只是封装和传递数据,但不向发送者或接收者报告包的状态,不处理所遇到的故障。
- IP 协议有以下四个主要功能:
- 数据传送
- 寻址
- 路由选择
- 数据报文的分段
- IP 协议不注意包内的数据类型,它所知道的一切是必须将某些称为 IP 帧头的控制协议加到高层协议(TCP 或 UDP)所接收的数据上
- 网络层其他数据路由协议
- 路由协议分析数据包的地址并且决定传输数据到目的电脑最佳路线。它们也可以把大的数据分成几部分,并且在目的地再把它们组合起来。IP 处理实际上传输数据
- 网际控制报文协议(ICMP,Internet Control Message Protocol)处理 IP 的状态信息,比如能影响路由决策的数据错误或改变。ICMP 实际上不是IP 层部分,但直接同 IP 层一起工作,报告网络上的某些出错情况。允许网际路由器传输差错信息或测试报文
- RIP(路由信息协议,Routing Information Protocol),它是几个决定信息传输的最佳路由协议中的一个
- OSPF(Open Shortest Path First)一个用来决定路由的协议
- 地址解析协议(ARP,Address Resolution Protocol)确定网络上一台电脑的数字地址。ARP 实际上不是网络层部分,它处于 IP 和数据链路层之间,它是在 32位 IP 地址和 48 位局域网物理地址之间执行翻译的协议。
- DNS(域名系统,Domain Name System)从机器的名字确定一个机器的数字地址
- RARP(反向地址解析协议,Reverse Address Resolution Protocol)确定网络上一台计算机的地址,和 ARP 正好相反
- 路由协议分析数据包的地址并且决定传输数据到目的电脑最佳路线。它们也可以把大的数据分成几部分,并且在目的地再把它们组合起来。IP 处理实际上传输数据
51.2.3 传输层协议
- 传输控制协议(TCP)
- 可靠的面向连接的传输层服务
- 主要功能:
- 监听输入对话建立请求
- 请求另一网络站点对话
- 可靠的发送和接收数据
- 适度的关闭对话
- TCP(传输控制协议 Transmission Control Protocol)是重要的传输层协议,TCP 提供一种面向连接的、可靠的字节流服务
- TCP 协议的目的是允许数据同网络上的另外站点进行可靠的交换。它能提供端口编号的译码,以识别主机的应用程序,而且完成数据的可靠传输
- TCP 协议具有严格的内装差错检验算法确保数据的完整性
- TCP 协议是面向字节的顺序协议,这意味着包内的每个字节被分配一个顺序编号,并分配给每包一个顺序编号
- 用户数据报文协议(UDP)
- UDP 提供不可靠的非连接型传输层服务
- 它允许在源和目的地站点之间传送数据,而不必在传送数据之前建立对话
- 不使用 TCP 使用的端对端差错校验
- 传输层功能全部发挥,而开销却比较低
- 主要用于那些不要求 TCP 协议的非连接型应用程序。例如,名字服务、网络管理、视频点播和网络会议灯。
- UDP(用户数据报协议 User Datagram Protocol)也是 TCP/IP 的传输层协议,它是无连接的,不可靠的传输服务。当接收数据时,它不向发送方提供确认信息,它不提供输入包的顺序,如果出现丢失包或重份包的情况,也不会向发送方发出差错报文
- 它允许在源和目的地站点之间传送数据,而不必在传送数据之前建立对话
- 不使用 TCP 使用的端对端差错校验
- 传输层功能全都发挥,而开销却比较低
- 由于它执行功能时具有较低的开销,因而执行速度比 TCP 快。它多半用于不需要可靠传输的应用程序,例如网络视频点播和视频会议等。
- UDP 提供不可靠的非连接型传输层服务
- TCP 和 UDP 协议的区别
- TCP 以连接为基础,即两台电脑必须先建立一个连接,然后才能传输数据。事实上,发送和接受的电脑必须一直互相通讯和联系
- UDP 是一个无连接服务,数据可以直接发送而不必在两台电脑之间建立一个网络连接。它和有连接的 TCP 相比,占用带宽少,但是无法确认数据是否真正到达了客户端,而客户端收到的数据也不知道是否还是原来的发送顺序
51.2.4 应用层协议
- BOOTP(启动协议,Boot Protocol)由网络服务器上取得启动信息,然后将本地的网络计算机启动
- Telnet(远程登录)允许一个远程登录,使用者可以从网络上的一台机器通过 TELNET 连线到另一台机器,就像使用者直接在本地操作一样
- FTP 和 TFTP:文件传送协议
- FTP(文件传输协议,File Transfer Protocol)通过国际互联网从一台计算机上传输一个或多个文件到另外一台计算机
- SMTP:简单的文件传送协议
- EGP(外部网关协议,Exterior Gateway Protocol)为外部网络传输路由信息
- GGP(网关到网关协议,Gateway-to-Gateway Protocol)在网关和网关之间传输路由协议
- IGP(内部网关协议,Interior Gateway Protocol)在内部网络传输路由信息
- DNS:域名服务
51.3 IP 地址
51.3.1 介绍
- 在 TCP/IP 网络中,每个主机都由唯一的地址,它是通过 IP 协议来实现的
- IP 协议要求在每次与 TCP/IP 网络建立连接时,每台主机都必须为这个连接分配一个唯一的 32 位地址,因为在这个 32 位 IP 地址中,不但可以用来识别某一台主机,而且还隐含着网际间的路径信息
- 主机是指网络上的一个节点,不能简单地理解为一台计算机,实际上 IP 地址是分配给计算机的网络适配器(即网卡)的,一台计算机可以由多个网络适配器,就可以由多个 IP 地址,一个网络适配器就是一个节点。
- IP 地址为 32 位地址,一般以 4 个字节表示。每个字节的数字又用十进制表示,即每个字节的数的范围是 0~255,且每个数字之间用点隔开,例如:192.168.0.112,这种记录方法称为“点-分”十进制记号法。IP 地址的结构如下所示:
- 192 为网络类型;168.0 为网络 ID;112 为主机 ID
51.3.2 IP 地址的分类
51.4 端口
51.4.1 端口号
- TCP/UDP 协议使用 16 位整数存储端口号,所以每个主机拥有 65535 个端口
- 一些端口被 IANA 分配给制定应用
- 21:FTP
- 23:Telnet
- 80:HTTP
- RFC 1700(大约有2000个保留端口)
五十二、linux 编程——网络介绍的更多相关文章
- Gradle 1.12用户指南翻译——第五十二章. Maven 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...
- Java进阶(五十二)利用LOG4J生成服务日志
Java进阶(五十二)利用LOG4J生成服务日志 前言 由于论文写作需求,需要进行流程挖掘.前提是需要有真实的事件日志数据.真实的事件日志数据可以用来发现.监控和提升业务流程. 为了获得真实的事件日志 ...
- SQL注入之Sqli-labs系列第五十关,第五十一关,第五十二关,第五十三关(ORDER BY堆叠注入)
0x1第五十关 源码中使用的mysqli_multi_query()函数,而之前使用的是mysqli_query(),区别在于mysqli_multi_query()可以执行多个sql语句,而mysq ...
- “全栈2019”Java第五十二章:继承与初始化详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 《手把手教你》系列技巧篇(五十二)-java+ selenium自动化测试-处理面包屑(详细教程)
1.简介 面包屑(Breadcrumb),又称面包屑导航(BreadcrumbNavigation)这个概念来自童话故事"汉赛尔和格莱特",当汉赛尔和格莱特穿过森林时,不小心迷路了 ...
- Bristol大学密码学博士生的五十二个知识点
Bristol大学密码学博士生的五十二个知识点 这个系列,是Bristol大学的密码安全工作组为密码学和信息安全相关的博士准备了52个基本知识点. 原地址:http://bristolcrypto.b ...
- 面渣逆袭:Redis连环五十二问,图文详解,这下面试稳了!
大家好,我是老三,面渣逆袭系列继续,这节我们来搞定Redis--不会有人假期玩去了吧?不会吧? 基础 1.说说什么是Redis? Redis是一种基于键值对(key-value)的NoSQL数据库. ...
- abp(net core)+easyui+efcore实现仓储管理系统——出库管理之三(五十二)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
随机推荐
- 【English Email】CIP payouts now in Workday
simplification简化的[ˌsɪmplɪfɪˈkeɪʃn] quota配额[ˈkwoʊtə] regional区域的[ˈriːdʒənl] mechanics技工[məˈkænɪks] ...
- FeathersJS简单使用指南,一个前端也能玩得转的后端框架
官方文档 :https://docs.feathersjs.com/api/services.html#createdata-params 第一步,创建接口和服务 app.use("user ...
- lsof -i
https://www.cnblogs.com/sparkbj/p/7161669.html 主要命令
- 【转】Android调用Sqlite数据库时自动生成db-journal文件的原因
数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...
- leetcode 263. Ugly Number 、264. Ugly Number II 、313. Super Ugly Number 、204. Count Primes
263. Ugly Number 注意:1.小于等于0都不属于丑数 2.while循环的判断不是num >= 0, 而是能被2 .3.5整除,即能被整除才去除这些数 class Solution ...
- P1546 最短网络 Agri-Net题解(克鲁斯卡尔)
P1546 最短网络 Agri-Net 那么这个题是一道最小生成树的板子题 在此讲解kruskal克鲁斯卡尔方法: 原理: 并查集在这里被用到: 众所周知:树满足这样一个定理:如果 图 中有n个节点并 ...
- 传统C/S软件的"断骨增高"
前言: 由于院内临床业务需要高频强功能的用户界面互操作性要求,使得在HIT行业中存在大量的C/S型软件,尽管B/S软件应用范围正在扩大,但在很多场景中,C/S软件仍然顽强的生存和发展着. 不过随着行业 ...
- mybatis的where和if标签配合使用
where标签用于简化sql的书写,if标签用于判断.大概的使用如下 <select id="getCountByPageInfo" parameterType=" ...
- 使用Github生成燃尽图
经过一晚上折腾,终于算是把linux上成功生成了我们团队项目的燃尽图,效果还是不错,在过程中又发现了另一种生成燃尽图的方式,也是基于一个开源项目. 1.准备: 首先你的项目一定要有milestone. ...
- 如何从官网下载 Google Chrome 离线安装包
1.打开 Chrome 浏览器主页:http://www.google.cn/chrome 2.地址栏最后的网址是这样的:http://www.google.cn/chrome/browser/des ...