五十二、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)+ ...
随机推荐
- 返回数组中指定的一列,将键值作为元素键名array_column
array_column() 函数 从记录集中取出 last_name 列: <?php // 表示由数据库返回的可能记录集的数组 $a = array( array( 'id' => 5 ...
- 理解MySQL数据库事务
1. 什么是事务处理? 事务处理是一种机制,它是用来管理必须成批执行的mysql操作.来保证数据库不完整的操作结果. 2. 为什么要使用事务处理? 在使用mysql操作数据的过程中,如果只是简单的中小 ...
- 迷茫<第二篇:回到老家湖南长沙>
2014年8月初,我买了回老家的火车票,当时没有买到坐票,卧铺贵了买不起,所以我就选择了站票,准备站回老家.我现在还记得我当时买的是T1列火车,北京西站到长沙火车站,全程16个小时.当时我就在火车上站 ...
- Windows 与Office 镜像的区别
.SW开头是批量授权的版本. .CN开头是简体中文版镜像文件 零售版本. 其实建议使用 SW开头的镜像 可以直接使用KMS进行激活了. 转帖一个百度知道的内容: 看安装包的名称 cn开头的是零售版的, ...
- [转帖] CA如何保护自己的私钥
作者:Gh0u1L5链接:https://www.zhihu.com/question/22260090/answer/648910720来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业 ...
- LODOP不同打印机出现偏移问题
方法简单描述:1.精确套打,设置以纸张边缘为基点,可避免不同可打区域不同带了的影响.2.不同客户端打印机位置差异,可通过打印维护调整,结果在客户端本地.或调整打印机初始位置(本人使用的金税盘的开票软件 ...
- spring中设计模式
MVC模式 Model:pojo.数据库交互(业务数据和业务逻辑) View:Jsp(与用户交互页面) Controller:控制器(接收请求并决定调用哪个模块组件去处理请求,然后决定调用哪个视图(通 ...
- 自己实现ArrayList与LinkedList类
ArrayList与LinkedList的底层实现 ArrayList内部由数组实现,LinkedList内部由链表实现. 自己动手实现ArrayList与LinkedList中一些常用方法 Arra ...
- ☆ [NOI2014] 魔法森林 「LCT动态维护最小生成树」
题目类型:\(LCT\)动态维护最小生成树 传送门:>Here< 题意:带权无向图,每条边有权值\(a[i],b[i]\).要求一条从\(1\)到\(N\)的路径,使得这条路径上的\(Ma ...
- [SHOI2008]仙人掌图 II——树形dp与环形处理
题意: 给定一个仙人掌,边权为1 距离定义为两个点之间的最短路径 直径定义为距离最远的两个点的距离 求仙人掌直径 题解: 类比树形dp求直径. f[i]表示i向下最多多长 处理链的话,直接dp即可. ...