Python网络编程初识.md

网络编程初识

网络协议

概念

网络协议,也称通信协议或传输协议。在电信中是指在任何物理介质中允许两个或多个在传输系统中的终端之间传播信息的系统标准,也是指计算机通信或网络设备的共同语言。通俗来讲,网络协议就是指信息在网络设备以何种语法规范进行传播,协议就是规定了通信时信息的格式以及如何进行处理。

OSI模型

  • 概念
    开放式系统互联模型(Open System Interconnection Model,简称为OSI模型)是一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。

  • 七层模型

  • 五层模型


TCP/IP协议

概念

互联网协议套件(缩写IPS)是一个网络通信模型,以及一整个网络传输协议家族,为网际网络的基础通信架构。它常被通称为TCP/IP协议族(TCP/IP Protocols),简称TCP/IP。因为该协议家族的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准。由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又被称为TCP/IP协议栈(TCP/IP Protocol Stack)。
TCP/IP提供了点对点链接的机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。

IP协议

  • 概念
    网际协议(IP,也称互联网协议)是用于分组交换数据网络的一种协议。
    IP是在TCP/IP协议族中网络层的主要协议,任务仅仅是根据源主机和目的主机的地址来传送数据。为此目的,IP定义了寻址方法和数据报的封装结构。第一个架构的主要版本为IPv4,目前仍然是广泛使用的互联网协议,已有 30 多年历史。IPv4 地址的长度为 32 位,采用十进制,如 192.1.1.1,最多有 4,294,967,296 个 IPv4 地址可用。尽管世界各地正在积极部署IPv6,IPv6 相比 IPv4 最显著的变化在于地址长度增长到了 128 位,可用的地址数量大为增加,理论上有 340,282,366,920,938,463,463,374,607,431,768,211,456 个,即 340 万亿兆,通常采用十六进制表示,分为8组,每4个数为一组,以冒号分隔。

  • IPv4地址耗尽
    2019-11-25 UTC+1 15:35 时,一封来自欧洲 RIPE NCC 的邮件中得到确认:全球的IPv4地址已经彻底耗尽。

TCP协议

  • 概念
    传输控制协议(TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。用户数据报协议(UDP)是同一层内另一个重要的传输协议。
    在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

  • 基本原理
    应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来透过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认信息(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失并进行重传。TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和。

  • TCP状态图


网络编程

概念

网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。换句话说,网络把不同的网络设备互联,让数据信息可以通过网络进行交换,对于我们而言就是计算机与计算机之间的通信交互,所以网络编程就是利用程序实现网络设备(如计算机)之间的通信。