五十二、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 正好相反

51.2.3 传输层协议

  • 传输控制协议(TCP)

    • 可靠的面向连接的传输层服务
    • 主要功能:
      • 监听输入对话建立请求
      • 请求另一网络站点对话
      • 可靠的发送和接收数据
      • 适度的关闭对话
    • TCP(传输控制协议 Transmission Control Protocol)是重要的传输层协议,TCP 提供一种面向连接的、可靠的字节流服务
    • TCP 协议的目的是允许数据同网络上的另外站点进行可靠的交换。它能提供端口编号的译码,以识别主机的应用程序,而且完成数据的可靠传输
    • TCP 协议具有严格的内装差错检验算法确保数据的完整性
    • TCP 协议是面向字节的顺序协议,这意味着包内的每个字节被分配一个顺序编号,并分配给每包一个顺序编号
  • 用户数据报文协议(UDP)
    • UDP 提供不可靠的非连接型传输层服务

      • 它允许在源和目的地站点之间传送数据,而不必在传送数据之前建立对话
      • 不使用 TCP 使用的端对端差错校验
      • 传输层功能全部发挥,而开销却比较低
      • 主要用于那些不要求 TCP 协议的非连接型应用程序。例如,名字服务、网络管理、视频点播和网络会议灯。
    • UDP(用户数据报协议 User Datagram Protocol)也是 TCP/IP 的传输层协议,它是无连接的,不可靠的传输服务。当接收数据时,它不向发送方提供确认信息,它不提供输入包的顺序,如果出现丢失包或重份包的情况,也不会向发送方发出差错报文
      • 它允许在源和目的地站点之间传送数据,而不必在传送数据之前建立对话
      • 不使用 TCP 使用的端对端差错校验
      • 传输层功能全都发挥,而开销却比较低
    • 由于它执行功能时具有较低的开销,因而执行速度比 TCP 快。它多半用于不需要可靠传输的应用程序,例如网络视频点播和视频会议等。
  • 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个保留端口)

原文地址:https://www.cnblogs.com/kele-dad/p/10349390.html

时间: 2024-10-07 05:05:27

五十二、linux 编程——网络介绍的相关文章

猫猫学iOS(五十二)多线程网络之GCD下单例设计模式

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 单例模式 1:单例模式的作用 可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问 从而方便地控制了实例个数,并节约系统资源 单例模式的使用场合 在整个应用程序中,共享一份资源(这份资源只需要创建初始化1次) 简单来说,就是我弄了一个工具类,他就有一份,比如我设计了一个音乐播放器NYPlayer,这个播放器类我

Java学习笔记—第十二章 Java网络编程入门

第十二章  Java网络编程入门 Java提供的三大类网络功能: (1)URL和URLConnection:三大类中最高级的一种,通过URL网络资源表达方式,可以很容易确定网络上数据的位置.利用URL的表示和建立,Java程序可以直接读入网络上所放的数据,或把自己的数据传送到网络的另一端. (2)Socket:又称"套接字",用于描述IP地址和端口(在Internet中,网络中的每台主机都有一个唯一的IP地址,而每台主机又通过提供多个不同端口来提供多种服务).在客户/服务器网络中,当客

Linux Shell常用技巧(十二) Shell编程

Linux Shell常用技巧(十二) Shell编程 二十三. Bash Shell编程:  1.  读取用户变量:    read命令是用于从终端或者文件中读取输入的内建命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY.下面的列表给出了read命令的常用方式: 命令格式 描述 read answer 从标准输入读取输入并赋值给变量answer. read first last 从标准输入读取输入到第

QT开发(五十二)———QML语言

QT开发(五十二)---QML语言 QML是一种声明语言,用于描述程序界面.QML将用户界面分解成一块块小的元素,每一元素都由很多组件构成.QML定义了用户界面元素的外观和行为:更复杂的逻辑则可以结合JavaScript脚本实现. 一.QML基础语法 1.Import语句 QML代码中,import语句一般写在头几行,主要用途如下:     A.包含类型的全名空间     B.包含QML代码文件的目录     C.JavaScript代码文件 格式如下: import Namespace Ver

c++ primer plus(第6版)中文版 第十二章编程练习答案

第十二章编程练习答案 12.1根据以下类声明,完成类,并编小程序使用它 //12.1根据以下类声明,完成类,并编小程序使用它 #include <iostream> #include <cstring> using namespace std; class Cow{ char name[20]; char * hobby; double weight; public: Cow(); Cow(const char * nm, const char * ho, double wt);

第五十二个知识点:选择一个先进的应用概念,如电子投票,拍卖或多方计算。这样一个系统的大致安全需求是什么

第五十二个知识点:选择一个先进的应用概念,如电子投票,拍卖或多方计算.这样一个系统的大致安全需求是什么 这是我们认为每个密码学博士一年级都应该知道的52件事中的最后一件.你可能已经收集了过去的52个博客,我们希望学生知道从理论到实践的各个方面.但关键是你需要在密码学中考虑的不仅是对遵守规则的玩家的安全,还有对不遵守规则的玩家的安全.让我们从投票.拍卖和多方计算的角度来研究这个问题. 让我们先讨论一下三个应用程序的含义. 在投票中,我们根绝投票者进行一些投票方案(得票最多者当选.多选.赞成投票或其

Linux学习总结(五十二)keepalived 配置高可用

一 集群介绍 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替 继续提供服务 实现高可用的开源软件有:heartbeat.keepalived 负载均衡集群,需要有一台服务器作为分发器,它负责把用户的请求分发给后端的服务器处理,在这个集群里,除了分发器外,就是给用户提供服务的服务器了,这些服务器数量至少为2 实现负载均衡的开源软件有LVS.keepalived.haproxy.nginx,商业的有F5.Netscal

第五十二课 linux操作系统原理、虚拟机基础原理

linux操作系统原理 linux操作系统原理 虚拟机技术基础原理 虚拟机技术基础原理

C#编程(五十二)----------有序列表

有序列表 如果需要基于对所有集合排序,就可以使用SortedList<TKey,TValue>类.这个类按照键给元素排序.这个集合中的值和键都可以使用任意类型. 下面的例子创建了一个有序列表,其中键和值类型都是string.默认的构造函数创建了一个空列表,再用Add()方法添加书.使用重载的构造函数.可以定义列表的容量,传递实现了IComparer<TKey>接口的对象,该接口用于给列表中的元素排序. 使用Add(Tkey,Tvalue)方法,第一个参数是键,第二个参数是值.除了使