iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux系统编程中的网络编程基础是什么
  • 413
分享到

Linux系统编程中的网络编程基础是什么

2023-06-28 15:06:48 413人浏览 薄情痞子
摘要

这篇文章主要为大家分析了linux系统编程中的网络编程基础是什么的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Linux系统编程中的网络编程基础是什么”的知

这篇文章主要为大家分析了linux系统编程中的网络编程基础是什么的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Linux系统编程中的网络编程基础是什么”的知识吧。

Linux可以算是当先最流行的开源操作系统,网络在系统中出于一个核心地位。

计算机网络的组成

1.网络结构

根据局域网的组成形式,可以将局域网分为星型网络环状网络总线网络3种基本网络结构。
Linux系统编程中的网络编程基础是什么
Linux系统编程中的网络编程基础是什么
Linux系统编程中的网络编程基础是什么
各种网络优缺点

  • 环状网络:

    • 优点:使计算机容易协调使用以及容易检测网络是否正确运行

    • 缺点:如果其中两根线断掉,整个网络失效

  • 星型网络:

    • 优点:保护网络不受某一根电缆损坏的影响

  • 总线网络:所需布线比星型网络少,和环状网络有一样的缺点

2.OSI参考模型

开放式系统互联参考模型。该模型为计算机间开放式通信所需要定义的功能层次建立了全球标准:

  • 物理层:负责数据流传输的最底层功能模块。从数据链路层接收数据帧,然后以串行方式发送数据帧,每次只发送一个字节。也负责接收数据流,组合成数据帧传送给数据链路层

  • 数据链路层:将数据流打包成数据帧,将数据帧交给物理层进行传递。也从物理层接收数据帧,并通过循环校验来检测数据传输的可靠性

  • 网络层:用于设备间建立路由,处理数据帧中的地址信息。不检验数据的完整性,而是交由数据链路层完成

  • 传输层:以数据包和网段为对象的数据处理层,是高度抽象化的数据链路层服务。传输层对数据的完整性负责,如果某一数据包丢失,将要求对方重新发送

  • 会话层:用于建立两个网络终端间的联系,与传输层关系极为密切,用于决定通信的模式是单工还是双工,以及基本的握手协议

  • 表示层:用于处理不同计算机的数据编码方式,负责对数据编码进行转换。不同的计算机的数据编码系统可能有差别

  • 应用层:不包括任何应用,只是为OSI参考模型提供接口。通常,网络协议被应用程序调用的是应用层

Linux系统编程中的网络编程基础是什么

3.tcp/IP参考模型

以OSI参考模型为基础设计的。TCP/IP协议是一个协议集,其核心为TCP协议和IP协议。具有如下4个特点:

  • TCP/IP是一种标准化的高级协议,同时提供了多种网络服务协议

  • 完善的网络地址分配方法,网络中每个点有具备独立的地址

  • 非专利技术,与操作系统及硬件结构无关

  • 与网络硬件无关,适合于各种网络结构

TCP/IP参考模型有4个层次,与OSI模型的对应关系如下:

Linux系统编程中的网络编程基础是什么

(1)应用层

TCP/IP参考模型的最高层,向用户提供一些常用应用程序。应用层包括了所有的高层协议,并且总是不断有新的协议加入。主要协议有:

  • 网络终端协议TELNET: 用于实现互联网中的远程登录功能

  • 文件传输协议FTP: 用于实现互联网中交互式文件传输功能

  • 简单电子邮件协议SMTP: 实现互联网中电子邮件发送功能

  • 域名服务DNS 用于实现网络设备名字到IP地址映射的网络服务

  • 网络文件系统NFS: 用于网络中不同主机间的文件共享

(2)传输层

也称TCP层,主要功能是负责应用进程之间的端到端通信。
传输层定义了两种协议:传输控制协议TCP用户数据包协议UDP

(3)网络层

又称为IP层,负责处理互联网中计算机之间的通信,向传输层提供统一的数据包。主要功能有:

  • 处理来自传输层的分组发送请求

  • 处理接收的数据包

  • 处理互联的路径

(4)物理链路层

主要功能是接收IP层的IP数据包,通过网络向外发送,或接收处理从网络上传送来的物理帧,抽出IP数据包,向IP层发送。该层是主机与网络的实际连接层。

二 TCP/IP协议

1.IP协议与Internet

规定:数据包由数据包正文报头两部分组成:

  • 数据包正文:要传递的数据,无格式要求

  • 报头:包括发送主机的网络地址、接收主机的网络地址、数据包的报头校验和数据包长度等信息

IP层协议主要功能:

  • 数据包传输

  • 数据包路由选择

  • 数据包拥塞控制

数据包采用“无连接”方式传递,即两台主机在通信之前不要建立连接。网络主机间使用统一的IP数据包,这样能保持不同物理网络间能够传递和识别数据。
乳沟目的地为同一网段的计算机,那么数据包将被直接传输过去。如果两台主机处于Internet上的不同子网,IP协议将通过路由器获得主机间的传输路径,通过交换机或服务器接力的方式,将数据包传递过去。

2.IP互联网协议地址

IP地址是一个32位二进制数,即4字节。通常将其表示为w.x.y.z的形式。字母对应0-255的十进制整数,对应二进制表示法中的一个字节。(点分十进制表示)
IP地址分为如下三类:

(1)A类地址

最高位为0,其前8位为网络地址,是在申请地址时由管理机构设定的,后24位为主机地址,可由网络管理员分配给本机构子网的各主机。第一个十进制整数的值在1-126之间。最多可有127个A类地址。

(2)B类地址

前16位为网络地址,后16位为主机地址,且第一位为1,第二位为0。B类地址的第一个十进制整数的值在128-191之间。

(3)C类地址

前24位为网络地址最后8位为主机地址,且第一位,第二位为1,第三位为0。第一个整数值在192-223之间。

有几个特殊的IP地址:

  1. 回送地址(127.0.0.1):用于网络测试或本机进程间通信

  2. 广播地址:用于呼叫整个网络内的计算机,子网中最后一个地址即被用作广播地址

  3. 子网地址:用于识别子网,子网中第一个地址即是子网地址

3.TCP协议

TCP是重要的传输层协议,必须保证数据传递的完整性。另外,数据报文中有计算机端口号信息,可以用来区别同一计算机上不同应用程序的数据。
数据报文中还有一个顺序编号,使接收的计算机能够根据编号重新按顺序还原数据。
TCP协议的另一个重要功能是把大的数据切成较小的数据包,或者将接收到的数据包按顺序还原为原始数据。如果发现某一数据包丢失,TCP协议会向源计算机发送请求,要求重新传递丢失的数据包。这种处理能力,被称为全双工
TCP协议最小的处理单位为字节,因此TCP是面向字节的顺序协议。数据包内每个字节都会被分配一个顺序编号,以及为了验证数据真实性的奇偶校验位。
TCP报文结构如下图所示:
Linux系统编程中的网络编程基础是什么
字段定义如下:

  • 源端口:源计算机指定的端口编号

  • 目的地端口:接收计算机的端口编号

  • 顺序号:分配给TCP包的编号

  • 应答号:接收计算机向源计算机发送的编号

  • 偏移位:指出TCP头的长度。表明数据开始和TCP头结束。对于正常的20字节头,这个字段设置为0101

  • 保留位:为将来使用而保留,必须设置为0

  • 控制位:用作个别控制位,见下表

  • 窗口号:窗口字段也称接收窗口大小,表示在TCP连接上准备由主机接收的8位字节的数目

  • 校验位:一个差错检验数,用于确定被接收的数据包文在传输期间是否被讹误。包括TCP头和所有数据

  • 紧急指针:指出了紧接紧急数据的字节的顺序编号

  • 可选项:长度变量,它考虑到TCP使用的各种选项,即选项表的结束、无操作、最大分段长度

Linux系统编程中的网络编程基础是什么
TCP提供的主要服务有:

  • 建立、维持和终结两个进程之间的连接

  • 可靠的包传递(经过确认过程)

  • 编序包(可靠的数据传递)

  • 控制差错的机制

  • 通过使用端口,允许在个别的源和目的地主机内部实现和不同进程多重连接的能力

  • 使用全双工操作的数据交换

4.UDP协议

又称用户数据包文协议,也是TCP/IP的传输层协议。它是无连接的、不可靠的传输服务。当接收数据时它不向发送方提供确认的信息,它不提供输入包的顺序。如果出现丢包或重复包的情况,也不会向发送方发出差错报文,与IP协议非常类似。
UDP的主要作用是分配和管理端口编号,以正确无误地识别运行在网络站点上的个别应用程序。
报文结构如下图所示:
Linux系统编程中的网络编程基础是什么

关于“Linux系统编程中的网络编程基础是什么”就介绍到这了,更多相关内容可以搜索编程网以前的文章,希望能够帮助大家答疑解惑,请多多支持编程网网站!

--结束END--

本文标题: Linux系统编程中的网络编程基础是什么

本文链接: https://www.lsjlt.com/news/320259.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux系统编程中的网络编程基础是什么
    这篇文章主要为大家分析了Linux系统编程中的网络编程基础是什么的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Linux系统编程中的网络编程基础是什么”的知...
    99+
    2023-06-28
  • Java 网络编程基础
    文章目录 前言什么是网络编程网络编程基础知识网络通讯流程长连接和短连接Socket Java 网络编程总结 前言 一个网络请求、服务之间的调用都需要进行网络通讯,在日常开发时我们可能并不会关心我们的服务端是怎么接收到请求的、...
    99+
    2023-08-16
    java 网络 开发语言
  • Python基础:网络编程socket基
    socket也叫套接字,是对各种协议的封装,实现收发数据。Python里socket工作过程:(图片来自网络)socket在Python中实际上是一个模块,实现发送和接收数据的功能。因为socket是一个类,所以只导入模块需要使用socke...
    99+
    2023-01-31
    网络编程 基础 Python
  • python编程之网络基础
    1 套接字是一种具有通讯端点概念的计算机网络数据结构,网络化的应用程序在开始任何通讯之前都必须要建立套接字。 套接字起源于20世纪70年代,有时人们把套接字成为“伯克利套接字”或“BSD套接字”,期初,套接字被设计用在同一台主机上多个应用...
    99+
    2023-01-31
    基础 网络 python
  • Python基础:网络编程sockets
    socketserver此模块简化了socket的编写。    1、它有一个基类,定义了如何建立连接。BaseServer提供了服务类接口,BaseServer使用了select创建了多线程。BaseServer下面有四个类:TCPServ...
    99+
    2023-01-31
    网络编程 基础 Python
  • 详解python的网络编程基础
    目录一.什么是网络编程二.socket1.socket的基本语法2.与socket有关的一些函数服务端函数客户端函数公共函数三.程序需求服务端分析客户端分析四.代码升级加上通信循环&...
    99+
    2024-04-02
  • 《Python网络编程基础》笔记
                              python网络编程基础                           ================== Author: lujun9972 <luj...
    99+
    2023-01-31
    网络编程 基础 笔记
  • Java网络编程基础详解
    目录网络编程1.1 概述1.网络编程中有两个主要的问题2.网络编程中的三要素1.3、IP1.4、端口1.5、通信协议UDP协议TCP协议1.6、TCP模拟通信客户端服务器文件上传1....
    99+
    2024-04-02
  • Netty网络编程零基础入门
    目录OSI七层网络模型Socket技术TCP协议Java语言创建socket应用http协议OSI七层网络模型 应用层:Http协议、文件服务器、邮件服务器 表示层:数据转换解决不同...
    99+
    2022-11-13
    Netty网络编程 Netty编程
  • Linux网络编程中IO模型指的是什么
    今天就跟大家聊聊有关Linux网络编程中IO模型指的是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。基于IO访问中存在的两个阶段详细介绍了Linux产生的五种IO模型。同步与异步...
    99+
    2023-06-06
  • 【100天精通Python】Day46:Python网络编程_网络编程基础与入门
    目录 专栏导读  1 网络编程的基础 2. 基本概念和协议 2.1 计算机网络基础 2.2 网络协议、IP地址、端口号 2.3  常见网络协议 3. 套接字编程 3.1 套接字的基本概念 3.2 套接字的基本操作 3.3 套接字通信模型和方...
    99+
    2023-09-06
    前端 python 网络编程
  • Java网络编程基础用法详解
    目录Socket 编程ServerSocket 类的方法Socket 类的方法InetAddress 类的方法Socket 通讯实例网络编程是指编写运行在多个设备(计算机)的程序,这...
    99+
    2023-05-19
    Java 网络编程 Java 网络
  • 浅谈java网络编程基础知识
    这篇文章主要浅谈java网络编程基础知识,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。网络基础知识1、OSI分层模型和TCP/IP分层模型的对应关系这里对于7层模型不展开来讲,只选择跟这次系列...
    99+
    2023-05-30
    java ava
  • Linux系统中bash shell编程的基础问题有哪些
    这篇文章给大家分享的是有关Linux系统中bash shell编程的基础问题有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。第1问:为何叫做shell?在介绍 shell 是什么东西之前,不妨让我们重新审视使...
    99+
    2023-06-09
  • 汇编基础程序编写的方法是什么
    这篇文章主要介绍“汇编基础程序编写的方法是什么”,在日常操作中,相信很多人在汇编基础程序编写的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”汇编基础程序编写的方法是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-25
  • C#网络编程TCP基本概念是什么
    这篇文章主要介绍“C#网络编程TCP基本概念是什么”,在日常操作中,相信很多人在C#网络编程TCP基本概念是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#网络编程TCP基本概念是什么”的疑惑有所帮助!...
    99+
    2023-06-18
  • python的网络编程基础知识有哪些
    这篇“python的网络编程基础知识有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python的网络编程基础知识有哪些...
    99+
    2023-06-26
  • python基础之什么是并发编程
    本篇内容介绍了“python基础之什么是并发编程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、协程定义和作用协程(coroutine),...
    99+
    2023-06-25
  • 网络编程中python指的是什么意思
    这篇文章主要介绍网络编程中python指的是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易...
    99+
    2023-06-14
  • java网络编程的要素是什么
    java网络编程的要素是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2、浮点类...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作