美文网首页
网络编程基础

网络编程基础

作者: 遇明不散 | 来源:发表于2019-04-22 14:24 被阅读0次

网络功能

数据传输

网络体系结构标准

OSI模型
  • 1、网络信息传输比较复杂需要很多功能协同。
  • 2、将功能分开,降低耦合度,让每个模块完成一定的功能。
  • 3、将这些模块按照一定的顺序进行组合,完成功能,条理清晰。
    按照规定功能、顺序排列的体系结构,即为OSI模型。
编程思想
  • 高内聚 :模块功能尽可能单一,不要掺杂
  • 低耦合 :模块之间尽可能减少关联和影响
OSI七层模型

网络通信工作流程的标准化

  • 应用层
    提供用户服务,具体功能由特定的程序而定,例如处理应用程序、文件传输、数据管理等。
  • 表示层
    数据的转换和压缩、解压的加密等。
  • 会话层
    建立应用级的连接,选择传输服务。
  • 传输层
    建立网络连接,提供合适的连接传输服务,提供流量控制。
  • 网络层
    控制分组传输,进行路由选择,网络互联。
  • 链路层
    进行数据转换,具体消息的发送,链路连接。
  • 物理层
    物理硬件,具体的传输条件和传输接口。
OSI七层模型优点
  • 将工作流程标准化
  • 降低了模块间的耦合度,使每一部分可以单独开发,单独工作
四层模型
  • 应用层(应用层、表示层、会话层)
  • 传输层
  • 网路层
  • 物理链路层(链路层、物理层)
五层模型(TCP/IP模型)
  • 应用层(应用层、表示层、会话层)
  • 传输层
  • 网路层
  • 链路层
  • 物理层
数据传输流程
  • 发送端由应用层到物理层逐层添加信息头(首部),最终在物理层发送。
  • 中间经过节点(交换机,路由器等)转发,发送到接收端。
  • 在接收端根据发送端的每个信息头进行解析,最终消息到应用层展示给用户。

网络协议

在网络通信中双方都遵循的规定。包括建立什么样的网络结构,消息结构,标识代表什么等。

  • 应用层协议:TFTP、DNS、FTP、SMTP、HTTP
  • 传输层协议:TCP、UDP
  • 网络层协议:IP、ARP、ICMP
  • 物理链路层协议:IEEE

网络相关概念

网络主机

在网络中标识一台计算机,HOST

  • 本地使用:localhost127.0.0.1
    表示本机通信地址,只有本机的其他程序可以访问,网络访问不了,也可叫本机回环地址,可用于本地模拟测试。
  • 网络使用:0.0.0.0或本机IP
    表示本机在网络上的标识,可用于网络。0.0.0.0:表示在局域网内的可用主机IP,如果不知道本机的IP,可用0.0.0.0表示给本主机分配一个局域网内随机可用IP。
相关函数
// 导入相关模块
import scoket                 
 
// 获取主机名称
socket.gethostname()   
         
// 通过主机名称解析本机或主机服务器IP
socket.gethostbyname('hostname') 

//  解析本机localhost回环IP  
socket.gethostbyname('localhost')   
              
/* 
* 通过地址获取主机网络信息,返回一个元组
* 第一个参数表示主机名
* 第二个参数表示主机别名
* 第三个参数表示网络地址 
* args可以是IP或域名  
*/
socket.gethostbyaddr('args')
IP地址

网络上确定一台主机网络位置的地址

IPv4
  • 点分十进制
    三个点将IP分为四个部分,每部分取值0~255
    例如:192.168.1.5,192.121.10.23,172.23.5.6 ...
  • 二进制
    32位二进制表示
IPv6
  • 随着网络的发展,IPv4地址不够用了,为了扩展地址空间,研究出了IPv6。
  • IPv6为128位,用十六进制表示,两个十六进制占一组,大大扩展了地址空间。
  • 在我国,大部分的民用地址还是IPv4,有些商用地址是IPv6。

192.168.1.0 表示该网段
192.168.1.1 该网段的网关地址
192.16.1.255 广播地址

ping命令

测试和某台网络主机是否联通

特殊IP地址
  • 127.0.0.1 本地测试IP
  • 0.0.0.0 使用本机可用IP
  • 192.168.1.0 表示网段IP
  • 192.168.1.1 网关IP
  • 192.168.1.255 广播地址
IP地址的转换
/*
   socket.pton()与socket.ntop()有第一个参数
   AF_INET表示转化IPv4类地址
   AF_INET6表示转化IPv6类地址
  其余和socket.inet_aton()与socket.inet_ntoa()功能相同
*/

// 将点分十进制转换为二进制
socket.inet_aton('192.168.12.23')  // b'\xc0\xa8\x0c\x17'
socket.inet_pton(socket.AF_INET,'192.168.12.23')  // b'\xc0\xa8\x0c\x17'

// 将二进制转换为点分十进制
socket.inet_ntoa(b'\xc0\xa8\x0c\x17')  // 192.168.12.23
socket.inet_ntop(socket.AF_INET,b'\xc0\xa8\x0c\x17')   // 192.168.12.23
域名

网络服务器地址的名称

  • 方便记忆
  • 名称表达一定的含义
端口号
  • 端口是网络地址的一部分,用于区分一个网络主机上的网络应用(应用层程序)
  • 在一个操作系统中不同的网络应用监听不同的端口号
  • 取值范围:1~65536
  • 1 ~ 255 众所周知的端口,一些特有的程序会占用这些端口
  • 256 ~ 1023 系统程序占用的端口
  • 1024 ~ 49151 登记端口(可以使用)
  • 49152 ~ 65535 私有端口或者动态端口
  • 推荐使用10000以上的端口号
获取系统中某个网络服务程序的端口号
// 获取系统中某个网络服务程序的端口号
socket.getservbyname('ssh')    // 22
socket.getservbyname('mysql')  // 3306
socket.getservbyname('http')   // 80
子网掩码

与IP配合使用,来确定当前的网段。
按位相与即可得到当前网段。

网络字节序
  • 数据在网络中的传输格式
  • 小端序:低序字节存在低地址位
  • 大端序:高序字节存在低地址位
  • 网络统一:网络字节序,保证不同的主机按照相同方式发送接收解析数据

TCP/UDP协议

传输层提供的通信协议

面向连接的可靠传输服务

基于tcp协议的数据传输

实现手段

数据传输断开前都需要进行传输和断开的确认

TCP协议规定
  • 传输服务必须建立连接
  • 传输结束必须断开连接
  • 传输数据必须保证可靠
数据的可靠性
  • 无重复
  • 无丢失
  • 无失序
  • 无错误
建立连接(三次握手)

tcp传输在数据传输前建立连接的过程

  • 客户端向服务端发送连接请求(发送一个试探性的标志字符给服务器)
  • 服务器收到请求后,回复确认消息,表示允许连接
  • 客户端收到服务器,进行最终标志发送确认连接
断开连接(四次挥手)

tcp传输在连接断开前进行断开确认的过程

  • 主动方送标志告知被动方要断开来连接
  • 被动方返回相应的标志信息告知主动方已经收到断开请求
  • 被动方会再次发送标志位信息表示已经准备就绪可以断开
  • 主动方断开连接告知被动方
适用情况
  • 对传输质量要求较高,需要可靠的传输。
  • 传输的数据量较大,不需要频繁的连接断开
    比如:QQ消息、邮件收发、文件上传、账户登陆等
面向无连接的不可靠服务

基于udp协议的传输

传输特点
  • 不保证数据的可靠性
  • 数据的发送都是由发起端决定的,不考虑接收端的情况
  • 没有三次握手和四次挥手的过程
  • 数据收发自由
适用情况
  • 对实时性要求较高
  • 网络情况不佳的时候
  • 对数据的准确性没有严格要求
  • 建立必要的非连接的情况(比如:广播组播)
  • 网络情况较差,对传输可靠性要求不高,需要提升传输效率。
  • 不便连接,需要灵活收发消息
    比如:网络视频,群聊,广播发送

要求 :
1. osi七层模型介绍一下,tcp/ip模型呢
2. tcp服务和udp服务有什么区别
3. 三次握手和四次挥手是什么意思,过程是怎样的

相关文章

  • Android应用开发:网络编程2

    网络编程 Java基础:网络编程 Uri、URL、UriMatcher、ContentUris详解 Android...

  • Http协议

    网络编程 Java基础:网络编程 Uri、URL、UriMatcher、ContentUris详解 Android...

  • iOS之网络基础(网络请求)

    一.网络基础 1 网络基础 001网络编程 (1)网络编程是一种实时更新应用数据的常用手段 ...

  • iOS-网络基础及应用-Http

    3.网络基础 3.1 网络基础 001 问题:为什么要学习网络编程? 回答:(1)网络编程是一种实时更...

  • I/O模型学习小记

    基础概念 通过I/O模型学习同步/异步、阻塞/非阻塞基础概念,参考资料如下:《Unix网络编程》《网络编程释疑之:...

  • Python爬虫 - 网络编程

    1. 网络编程基础 1.1 介绍 网络编程基础(1) OSI模型和TCP/IP协议计算机网络、OSI七层模型、TC...

  • 网络编程基础

    网络七层协议 应用层: 用户接口,应用层序,网关,HTTP协议等 表示层:数据表示,相当于一个东西的表示,比如图片...

  • 网络编程基础

    进程的网络地址:进程是出于运行过程中的程序实例,是操作系统调度和分配的基本单位。每个进程至少拥有一个线程否则,系统...

  • 网络编程基础

    网络编程目的 直接或间接地通过网络协议与其他计算机实现数据交换,进行通讯 网络编程中的两个主要问题 如何准确地定位...

  • 网络编程基础

    网络基础 计算机网络分层 : :设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。可以理解为网络...

网友评论

      本文标题:网络编程基础

      本文链接:https://www.haomeiwen.com/subject/pnkcgqtx.html