博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux系统之网络编程[基础概要]
阅读量:3747 次
发布时间:2019-05-22

本文共 3314 字,大约阅读时间需要 11 分钟。

Linux系统之网络编程[基础概要]

  1. 网络的基本概念
  2. TCP/IP协议概述
  3. OSI和TCP/IP模型
  4. 基本的TCP协议网络基础编程
  5. 基本的UPD协议网络基础编程
  6. 网络的高级编程

网络的基本概念

网络的目的:

目的:        1:使用远程资源        2:共享信息,程序和数据        3:分布式处理

协议:

计算机网络中实现通信必须要有一定的约束,如对速率,传输代码,代码结构,传输控制步骤和出错控制等约束,这些约定被称为通信协议

在两个节点之间要成功的进行通信,两个节点之间必须约定使用共同的”语言”,这些被通信各方共同遵守的约定,语言,规则被称为协议

在Internet中最为通用的网络协议为TCP(传输控制协议)/IP(网际协议)协议,它是一整个协议族,包含了很多子协议

网络分层模型

这里写图片描述

OSI(open system internet)开放式系统互联

TCP/IP传输控制协议与网际协议

网络分层中OSI模型和TCP/IP模型的对应关系

这里写图片描述

TCP/IP协议族

TCP/IP实际上是一个一起工作的通信家族,为网际数据通信提供通路

TCP/IP协议族大体上分为三部分:

1:internet协议(IP)
2:传输控制协议(TCP)和用户数据报文协议(UDP)
3:处于TCP和UDP之上的一组协议专门开发的应用程序(应用层).它们包括:远程登录(TELNET),文件传输协议(FTP),域名服务(DNS),简单邮件传送程序(SMTP),超文本传输协议(HTTP),HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer,是以安全为目标的HTTP通道等)多种协议

TCP/IP协议中网络层协议

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

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

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

3:地址识别协议(ARP)

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

4:DNS域名服务的协议(Domain Name System),从机器的名字确定一个机器的数字地址

5:RARP反向地址解析的协议(Reverse Address Resolution Protocol)确定网络上一台计算机的地址

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

TCP/IP协议中传输层的协议

传输控制协议(TCP协议)

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

用户数据报文协议(UDP)

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

TCP/IP应用层协议

Telent

远程登录协议

FTP和TFTP

文件传送协议

SMTP

简单的文件传送协议

DNS

域名协议

HTTP

超文本传输协议

HTTPS

加密类型的超文本传输协议

TCP/IP数据封装

数据封装和解封

从上图中我们可以看到:

应用层主要是将数据提交,然后浏览器会添加一个http的头部,在进入传输层的时候会通过TCP协议来增加一个TCP的头部,然后进入网络层的时候会添加一个IP头部,最后进入数据链路层和物理层的时候,会增加一个以太网的头部和尾部并且全部转换成bit rate,通过物理层进入网络传输.

解封装的过程也就是封装过程的逆向过程

TCP/IP协议中的internet协议(IP协议)

IP的主要目的是为数据输入/输出网络提供基本算法,为高层协议提供无连接的传送服务.这意味这在IP将数据递交给接受站点以前不在传输站点和接受站点之间建立会话(虚拟链路),它只是封装和传递数据,但是不向发送者或接受者报告包的状态.不处理所遇到的故障

其协议有以下几个功能:

  1. 数据传送
  2. 寻址
  3. 路由选择
  4. 数据报文的分段

    注意:

    IP协议不注意包内的数据类型,它所知道的一切是必须将某些成为IP帧头的控制协议加到高层协议(TCP或者UDP)所接收的数据上.
    这里写图片描述

    IP地址:

    在TCP/IP网络中,每个主机都有唯一的地址,它是通过IP协议来实现的

    主机指的是网络上的一个节点.不能简单地理解为一台计算机,实际上IP地址是分配给计算机的网络适配器(即网卡),一台计算机可以有多个网络适配器,就可以有多个IP地址.一个网络适配器就是一个节点

    IP地址为32位地址,一般以4个字节表示.每个字节的数字又用10进制来表示,即每个字节的范围是0–255,且每个数字之间都是用点来隔开的.

    如192.168.0.1(点分十进制记号法)

    由:网络类型   网络ID  主机ID

    IP地址的分类

地址类型 第一个字节的十进制
A 000-127
B 128-191
C 192-233
D 224-239
E 240-255

A,B,C三类由InterNIC(internet网络信息中心)在全球范围内统一分配,D,E为特殊地址

如下图所示:
这里写图片描述

端口号:

TCP/IP协议使用16位整数存储端口号,所以每个主机拥有65535个端口.
一些端口被IANA分配给指定应用:
21:FTP协议
23:TELNET协议
80:HTTP协议
1521:oracle数据库
3301:mysql数据库
RFC 1700(大约有2000个保留端口)

可以通过 more /etc/services查看已经预定好的端口号

传输控制协议(TCP)(Transmission Control Protocol)协议(传输层)

TCP(传输控制协议)是重要的传输层协议,TCP提供一种面向连接的,可靠的字节流服务

TCP协议的目的是允许数据同网络上的另外一个站点进行可靠的交换.它提供端口编号的译码,以识别主机的应用程序,而且完成数据的可靠传输
TCP协议具有严格的内装差错校验算法确保数据的完整性性
TCP协议是面向字节的顺序协议,这意味着包内的每个字节被分配一个顺序编号,并分配给每包一个顺序编号

tcp协议相关图示:

这里写图片描述

传输控制协议(UDP)(User Datagram Protocol)协议(传输层)

UDP(用户数据报协议)也是TCP/IP的传输层协议,它是无连接的,不可靠的传输服务.当接收数据的时,它不向发送方提供确认信息,它不同共输入包的顺序,如果出现丢失包或者重份包的情况也不会向发送方发出差错报文

它允许在原地址和目的站点之间传送数据,而不必在传送数据之前建立会话 不使用TCP使用的端对端差错校验 传输层功能全都发挥,而开销却很低

由于它执行功能的时候,具有较低的开销,因而执行速度比TCP要快,它多半用于不需要可靠传输的应用程序,例如:网络视频点播,和视频会议等场景

udp数据报文的封装

这里写图片描述

TCP协议与UDP协议之间的区别:

1:TCP协议以连接为基础,即两台电脑之间必须要先建立一种连接,然后才能传输数据.事实上,发送和接受的电脑必须一直互相通讯和联系

2:UDP是一个面向无连接的服务,数据可以直接发送而不必在两台电脑之间建立一个网络连接,它和有连接的TCP相比,占用带宽比较少,但是无法确认数据是否真正到达了客户端,而客户端接收到的数据也不知道是偶还是原来的发送顺序

以上的部分就是关于一些网络相关的基础信息,纯理论性相关的东西

你可能感兴趣的文章
使用Security安全框架实现权限登录
查看>>
JDBC工具类 使用Durid连接池链接MySQL数据库
查看>>
ANSYS——模态提取方法简介
查看>>
ANSYS——初学路径之路径的定义、作用以及ansys路径模块GUI的操作解释
查看>>
ANSYS——网格划分的不同方法以及GUI模块的操作(自由网格、映射网格、扫掠、拖拉)
查看>>
ANSYS——命令流学习(材料属性设置、建模的命令流)
查看>>
ANSYS——杆单元简介与示例(含新版本2019版本杆实常数设置、ANSYS help的使用、单元列表使用的举例)
查看>>
ANSYS——后处理中单元表(ELEMENT table)的作用、创建、使用
查看>>
在VScode上配置golang的开发环境
查看>>
leetcode每日一题---680. 验证回文字符串 Ⅱ
查看>>
leetcode每日一题---15. 三数之和
查看>>
leetcode每日一题---面试题 16.18. 模式匹配
查看>>
地主的钱袋
查看>>
招新成绩统计
查看>>
webpack
查看>>
go部署
查看>>
配置swagger--go语言
查看>>
打印杨辉三角
查看>>
java中String类中常用方法
查看>>
flutter学习笔记:第一个APP应用
查看>>