网络与并发(一)

Python-网络与并发

第一章 网络概述

​ 现在的生活离不开网络,例如手机,电脑,平板,都是网络的代名词,通过一些APP,浏览器,获取大量的信息如文字、声音、视频,这都是从网络的某个地址存在的或者是网络的另一端某个用户通过设备共享的,那么什么是网络?是通过又是如何共享的尼?网络是由若干节点和连接这些节点的链路构成,表示诸多对象及其相互联系,像我们平常办理宽带与手机办卡上网,都是通过向某一服务商缴费注册连上他们的设备,下载相应的聊天软件和浏览器就可以上网与他人交流、获取资源、浏览一些网络信息。

​ 当然还有一些其他的网络内容包含的范围非常大,只是没有接触到。现在的信息非常的发达,我们接触到的信息也非常的多,那么我们的信息是怎么完成网络共享,资源共享的尼?

​ 我们第一时间就是想到,浏览器,微信,QQ,这都是非常常见的网络信息传递和获取的方式,那是怎么传递的尼?网络又是一个什么样的?这里将引入网络模型的概念,常见的七层OSI模型与四层TCP/IP模型诠释了网络的连接与资源传递,当一个用户或一台主机向另一个用户或一台主机获取或是发送资源,中间的连接方式就封装在模型概念上传输或连接。

1. OSI模型

​ 网络

​ 1983年,国际标准化组织(International Organization for Standardization,ISO)发布了著名的ISO/IEC 7498标准,也就是开放式系统互连参考模型(Open System Interconnection Reference Model,OSI)。这个标准定义了网络的七层框架,试图使计算机在整个世界范围内实现互联。在OSI中,网络体系结构被分成以下7层。如下图

​ 1)物理层:定义了通信设备的传输规范,规定了激活、维持和关闭通信节点之间的机械特性、电气特性和功能特性等。此层为上层协议提供了一个传输数据的物理媒介。简单的描述是将数据转换为可通过物理介质传送的电子信号 相当于快递公司中的搬运工人。

​ 2)数据链路层:定了数据封装以及传送的方式。这个层次的数据单位称为帧。数据链路层包括两个重要的子层:逻辑链路控制层(Logic Link Control,LLC)和介质访问控制层(Media Access Control,MAC)。LLC用来对节点间的通信链路进行初始化,并防止链路中断,确保系统的可靠通信。而MAC则用来检测包含在数据帧中的地址信息。这里的地址是链路地址或物理地址,在设备制造的时候设置的。网络上的两种设备不能够包含相同的物理地址,否则会造成网络信息传送失败。简单的描述是决定访问网络介质的方式。在此层将数据分帧,并处理流控制。本层指定拓扑结构并提供硬件寻址,相当于快递公司中的装拆箱工人。

​ 3)网络层:定义了数据的寻址和路由方式。这一层负责选择子网间的数据路由,并实现网络互连等功能。简单的描述是使用权数据路由经过大型网络,相当于快递公司中的排序工人按指定的省市地区分类。

​ 4)传输层:为数据提供端到端传输。这是比网络层更高的层次,是主机到主机的层次。传输层将对上层的数据进行分段并进行端到端传输。另外,还提供差错控制和流量控制问题。简单的描述是提供终端到终端的可靠连接,相当于公司中跑快递点邮寄东西的人员。

​ 5)会话层:用来为通信的双方制定通信方式,包括建立和拆除会话。另外,此层将会在数据中插入校验点来实现数据同步。简单的描述允许用户使用简单易记的名称建立连接 相当于公司中收寄快递、包裹与拆包裹的前台服务人员。

​ 6)表示层:为不同的用户提供数据和信息的转换。同时还提供解压缩和加解密服务。这一层保证了两个主机的信息可以互相理解。简单的描述是协商数据交换格式 相当公司中替领导拿或寄快递的助理。

​ 7)应用层:控制着用户绝大多数对于网络应用程序的访问,提供了访问网络服务的接口。简单的描述是用户的应用程序和网络之间的接口。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接网络与并发(一)_第1张图片

​ 数据信息的实际流程使用的是实线的箭头标记的,而层次的关系则使用的是虚线来标记的。在OSI的七层模型中,数据访问只会在上下的两层之间进行。

​ 这是一个通用的网络系统模型,并不是一个协议定义。所以实际上OSI模型从来没有被真正实现过。但是,由于其模型的广泛指导性,现在的网络协议都已经纳入了OSI模型的范围之内。在其模型中,从下至上层次依次增加,其中物理层为第一层,数据链路层为第二层,以此类推,应用层为第七层。在称呼OSI协议中的模型的时候,可以直接使用本来的名字,也可以直接使用数字层次。

2. TCP/IP模型

​ 实际上在OSI模型出现之前,就已经有了TCP/IP的研究和实现。时间最早可以追溯到20世纪70年代,为互联网的最早的通信协议。TCP为传输层的协议,而IP则为网络层的协议。两个层次中有代表性的协议组合代表了一系列的协议族,还包括有ARP、ICMP和UDP协议等。由于TCP/IP协议出现的比OSI早,所以并不符合OSI模型,对应关系如下

网络与并发(一)_第2张图片

​ 图的左边为OSI模型,而右边为TCP/IP模型。从图中可以看到,TCP/IP模型并不关心IP层以下的组成,而是将数据输出统一成了网络接口层。这样,IP层只需要将数据发往网络接口层就可以了,而不需要关心下层具体的操作。而在OSI模型中,则将这些功能分成了数据链路层和物理层,而且还进行了进一步的划分。在传输层和网络层大部分还是一致的。而对于OSI中的上面三层,则在TCP/IP模型中将其合并成了应用层。

​ 在现在的Internet中,主要采用的都是TCP/IP协议。这已经成为互联网上通信的事实标准。现在,TCP/IP协议已经可以运行在各种信道和底层协议之上。在TCP/IP模型中,最主要的两个协议TCP/IP分别属于传输层和互联网层。在互联网层中,标志主机的方法是使用IP地址,如192.168.0.1就是一个内网主机的IP地址。通过对IP地址的类别划分,可以将整个Internet网络划分成不同的子网。而在传输层中,标志一个应用的方法是通过端口号来标志的,这些不同的端口号则表示不同的应用。例如80端口一般来说是HTTP协议,而23号端口则是Telnet协议等。这样,在TCP/IP模型中,标志一个主机上的应用则可以通过地址-端口对来表示,后面也会详细的说明协议具体情况

3. 协议

​ 协议也叫网络协议,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),它最终体现为在网络上传输的数据包的格式。协议往往分成几个层次进行定义,分层定义是为了使某一层协议的改变不影响其他层次的协议。

​ 遵循我们的OSI模型作为参考,常用到的协议有:网络层协议IP、传输层协议TCP和UDP、应用层协议HTTP等常用协议。下面简述一下协议的基本的概念和理解

​ 1)IP协议

​ IP是整个TCP/IP协议族的核心,也是构成互联网的基础。IP位于TCP/IP模型的网络层(相当于OSI模型的网络层),对上可 载送传输层各种协议的信息,例如TCP、UDP等;对下可将IP信息包放到链路层,通过以太网、令牌环网络等各种技术来 传送。 为了能适应异构网络,IP强调适应性、简洁性和可操作性,并在可靠性做了一定的牺牲。IP不保证分组的交付时限 和可靠性,所传送分组有可能出现丢失、重复、延迟或乱序等问题;

​ 目前的IP版本有4和6,如IPv4和IPv6,目前最流行的就是IPv4,有十进制和二进制两种表示方法。分别是:

​ 点分四组十进制。每一组范围是[0~255],如:255.255.255.255

​ 二进制,如:11111111 11111111 11111111 11111111

​ IPv6地址长度是128位,由8块(或8个字段)组成,每一块都包含四个16进制数,每块由冒号分隔。

​ 有以下特点:

​ 1、一个块中前导的0不必书写。

​ 2、全0的块可以省略,并用符号::代替。

​ 3、IPv6可以兼容IPv4地址,即可以用IPv6格式表示IPv4地址。表示方式为:IPv6块值为ffff,其后面紧跟“点分四组”的 格式。如:::ffff:10.0.0.1可以代表IPv4:10.0.0.1

​ 4、IPv6的低32位通常采用点分四组的表示法。:::ffff:10.0.0.1

​ IP地址是用来识别网络上的设备,因此,IP地址是由网络地址与主机地址两部分所组成

网络地址可用来识别设备所在的网络,网络地址位于IP地址的前段。当组织或企业申请IP地址时,所获得的并非IP地址 而是取得一个唯一的、能够识别的网络地址。同一网络上的所有设备,都有相同的网络地址。IP路由的功能是根据IP地址 中的网络地址,决定要将IP信息包送至所指明的那个网络

主机地址位于IP地址的后段,可用来识别网络上设备。同一网络上的设备都会有相同的网络地址,而各设备之间则是以 主机地址来区别。

​ 以下单只IP协议的地址结构图
网络与并发(一)_第3张图片

1 A类IP地址

​ 一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,

​ 地址范围1.0.0.1-126.255.255.254

​ 二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110

​ 可用的A类网络有126个,每个网络能容纳1677214个主机

2 B类IP地址

​ 一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,

​ 地址范围128.1.0.1-191.255.255.254

​ 二进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110

​ 可用的B类网络有16384个,每个网络能容纳65534主机

3 C类IP地址

​ 一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”

​ 范围192.0.1.1-223.255.255.254

​ 二进制表示为: 11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110

​ C类网络可达2097152个,每个网络能容纳254个主机

4 D类地址用于多点广播

​ D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。

​ 它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中

​ 多点广播地址用来一次寻址一组计算机

​ 地址范围224.0.0.1-239.255.255.254

5 E类IP地址

​ 以“1111”开始,为将来使用保留

​ E类地址保留,仅作实验和开发用

6 私有ip

​ 在这么多网络IP中,国际规定有一部分IP地址是用于我们的局域网使用,也就

​ 是属于私网IP,不在公网中使用的,它们的范围是:

10.0.0.0~10.255.255.255

172.16.0.0~172.31.255.255

192.168.0.0~192.168.255.255

7 注意

​ IP地址127.0.0.1~127.255.255.255用于回路测试,

​ 如:127.0.0.1可以代表本机IP地址,用http://127.0.0.1就可以测试本机中配置的Web服务器。

子网掩码

2)TCP与UDP协议

​ TCP和UDP协议是TCP/IP协议的核心。 TCP 传输协议:TCP 协议是一TCP和UDP协议属于传输层协议。其中TCP提供IP 环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端 到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为 IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、 传输经济的应用

​ 在TCP/IP网络体系结构中,TCP(传输控制协议)、UDP(用户数据报协议)是传输层最重 要的两种协议,为上层用户提供级别的通信可靠性。

​ 传输控制协议(TCP):TCP(传输控制协议)定义了两台计算机之间进行可靠的传输而交换的数据和确认信息的格式 以及计算机为了确保数据的正确到达而采取的措施。协议规定了TCP软件怎样识别给定计算机上的多个目的进程如何对分 组重复这类差错进行恢复。协议还规定了两台计算机如何初始化一个TCP数据流传输以及如何结束这一传输。TCP最大的 特点就是提供的是面向连接、可靠的字节流服务。

​ 用户数据报协议(UDP):UDP(用户数据报协议)是一个简单的面向数据报的传输层协议。提供的是非面向连接的、 不可靠的数据流传输。UDP不提供可靠性,也不提供报文到达确认、排序以及流量控制等功能。它只是把应用程序传给IP 层的数据报发送出去,但是并不能保证它们能到达目的地。因此报文可能会丢失、重复以及乱序等。但由于UDP在传输数 据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

​ TCP/IP 和UDP最大的区别就是:TCP/IP是面向连接的,UDP是无连接的。TCP协议和UDP协议各有所长、各有所短,适 用于不同要求的通信环境

面向连接的TCP:TCP协议是一种可靠的、一对一的、面向有连接的通信协议

​ “面向连接”就是在正式通信前必须要与对方建立起连接,是按照电话系统建模的。比如你给别人打电话,必须等线路接 通了、对方拿起话筒才能相互通话。客户端与服务端在使用TCP传输协议时要先建立一个“通道”,在传输完毕之后又要关 闭这“通道”,前者可以被形象地成为“三次握手”,而后者则可以被称为“四次挥手”。如下

​ 通道的建立——三次握手:

​ (1)在建立通道时,客户端首先要向服务端发送一个SYN同步信号。

​ (2)服务端在接收到这个信号之后会向客户端发出SYN同步信号和ACK确认信号。

​ (3)当服务端的ACK和SYN到达客户端后,客户端与服务端之间的这个“通道”就会被建立起来。

​ 通道的关闭——四次挥手:

​ (1)在数据传输完毕之后,客户端会向服务端发出一个FIN终止信号。

​ (2)服务端在收到这个信号之后会向客户端发出一个ACK确认信号。

​ (3)如果服务端此后也没有数据发给客户端时服务端会向客户端发送一个FIN终止信号。

​ (4)客户端收到这个信号之后会回复一个确认信号,在服务端接收到这个信号后,服务端与客户端的通道也就关闭。

​ TCP协议能为应用程序提供可靠的通 信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠 性要求高的数据通信系统往往使用TCP协议传输数据。

无连接的UDP协议:UDP协议是一种不可靠的、面向无连接、可以实现多对一、一对多和一对一连接的通信协议

​ “无连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。与手机短信非常相似:你在发短信的时 候,只需要输入对方手机号就OK了。UDP在传输数据前既不需要建立通道,在数据传输完毕后也不需要将通道关闭。只要 客户端给服务端发送一个请求,服务端就会一次性地把所有数据发送完毕。UDP在传输数据时不会对数据的完整性进行验 证,在数据丢失或数据出错时也不会要求重新传输,因此也节省了很多用于验证数据包的时间,所以以UDP建立的连接的 延迟会比以TCP建立的连接的延迟更低。UDP不会根据当前的网络情况来控制数据的发送速度,因此无论网络情况是好是 坏,服务端都会以恒定的速率发送数据。虽然这样有时会造成数据的丢失与损坏,但是这一点对于一些实时应用来说是十 分重要的。基于以上三点,UDP在数据传输方面速度更快,延迟更低,实时性更好,因此被广泛地用于通信领域和视频网 站当中

​ UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间 TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送ICMP数据包,然后对方主机确认收到数据包,如果数据 包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包。大家可以看 到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP 协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效率高;但也正因为如 此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。

3)HTTP协议

​ HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到 什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期 Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。

​ HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程

​ (1)客户与服务器建立连接;

​ (2)客户向服务器提出请求;

​ (3)服务器接受请求,并根据请求返回相应的文件作为应答;

​ (4)客户与服务器关闭连接。

​ 客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便 立即关闭连接,下次请求再重新建立连接。这种一次性连接主要考虑到WWW服务器面向的是Internet中成干上万个用户, 且只能提供有限个连接,故服务器不会让一个连接处于等待状态,及时地释放连接可以大大提高服务器的执行效率。

​ HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的 响应速度。HTTP是一种面向对象的协议。允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容 和大小,并允许对数据进行压缩传送。当用户在一个HTML文档中定义了一个超文本链后,浏览器将通过TCP/IP协议与指 定的服务器建立连接。

​ 从技术上讲是客户在一个特定的TCP端口(端口号一般为80)上打开一个套接字。如果服务器一直在这个周知的端口上 倾听连接,则该连接便会建立起来。然后客户通过该连接发送一个包含请求方法的请求块。

​ HTTP规范定义了9种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和 POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。

4.端口

​ 什么是端口?如下图:

网络与并发(一)_第4张图片

端口就是:是设备与外界通讯交流的出口

那么TCP/IP协议中的端口指的是什么呢?

端口就好一个房子的门,是出入这间房子的必经之路。如果一个进程需要收发网络数据,那么就需要有这样的端口,在linux系统中,端口可以有65536(2的16次方)个之多!既然有这么多,操作系统为了统一管理,所以进行了编号,这就是端口号

端口是通过端口号来标记的,端口号只有整数,范围是从0到65535

网络与并发(一)_第5张图片

端口号不是随意使用的,而是按照一定的规定进行分配。

端口的分类标准有好几种,我们这里不做详细讲解,只介绍一下知名端口和动态端口

知名端口是众所周知的端口号,范围从0到1023

80端口分配给HTTP服务
21端口分配给FTP服务

可以理解为,一些常用的功能使用的号码是估计的,好比 电话号码110、10086、10010一样,一般情况下,如果一个程序需要使用知名端口的需要有root权限

动态端口的范围是从1024到65535,之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。当这个进程关闭时,同时也就释放了所占用的端口号。

# 用“netstat -an”查看端口状态

端口有什么用呢 ? 我们知道,一台拥有IP地址的主机可以提供许多服务,比如HTTP(万维网服务)、FTP(文件传输)、SMTP(电子邮件)等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。 需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信,但你的电脑则可能使用“3457”这样的端口。

5.子网掩码

​ 要想理解什么是子网掩码,就不能不了解IP地址的构成。互联网是由许多小型网络构成的,每个网络上都有许多主机, 这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号 两部分,以便于IP地址的寻址操作。

​ IP地址的网络号和主机号各是多少位呢?

​ 如果不指定,就不知道哪些位是网络号、哪些是主机号,这就需要通过子网掩码来实现。

​ 子网掩码不能单独存在,它必须结合IP地址一起使用。

​ 子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分子网掩码的设定必须遵循一定的 规则

​ 与IP地址相同,子网掩码的长度也是32位,

  • 左边是网络位,用二进制数字“1”表示;
  • 右边是主机位,用二进制数字“0”表示。

​ 假设IP地址为“192.168.1.1”子网掩码为“255.255.255.0”。

其中,“1”有24个,代表与此相对应的IP地址左边24位是网络号;

“0”有8个,代表与此相对应的IP地址右边8位是主机号。

这样,子网掩码就确定了一个IP地址的32位二进制数字中哪些是网络号、哪些是主机号。

这对于采用TCP/IP协议的网络来说非常重要,只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。

​ 最常用的两种子网掩码

​ 子网掩码是“255.255.255.0”的网络:

最后面一个数字可以在0~255范围内任意变化,因此可以提供256个IP地址。
但是实际可用的IP地址数量是256-2,即254个,因为主机号不能全是“0”或全是“1”。

​ 主机号全为0,表示网络号

​ 主机号全为1,表示网络广播

​ 注意:

如果将子网掩码设置过大,也就是说子网范围扩大,那么,根据子网寻径规则,很可能发往和本地主机不在同一子网内的目标主机的数据,会因为错误的判断而认为目标主机是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃,使数据不能正确到达目标主机,导致网络传输错误;如果将子网掩码设置得过小,那么就会将本来属于同一子网内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关(文章下方有解释)的负担,造成网络效率下降。因此,子网掩码应该根据网络的规模进行设置。如果一个网络的规模不超过254台电脑,采用“255.255.255.0”作为子网掩码就可以了,现在大多数局域网都不会超过这个数字,因此“255.255.255.0”是最常用的IP地址子网掩码;假如在一所大学具有1500多台电脑,这种规模的局域网可以使用“255.255.0.0”。

6. BS/CS结构

C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。

B/S是Browser/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。浏览器通过Web Server 同数据库进行数据交互。

系统开发中C/S结构(Client/Server)中Client(客户端)往往可以由 B/S结构(Browser/Server结构)的Browser(浏览器)及其载体承担,C/S结构的Web应用与B/S结构(Browser/Server结构)具有紧密联系。大系统和复杂系统中,C/S结构和B/S结构的嵌套也很普遍。
原来的Client/Server结构转变成Browser/Server结构后,客户机的压力大大减轻,负荷被均衡地分配给了服务器。由于这种结构不再需要专用的客户端软件,因此也使技术维护人员从繁重的安装、配置和升级等维护工作中解脱了出来,可以把主要精力放在服务器程序的更新工作上。同时,使用Web浏览器作为客户端软件,界面友好,新开发的系统也不需要用户每次都从头学习。而且,这种三层模式,层与层之间相互独立,任何一层的改变都不影响其他层原有的功能,所以可用不同厂家的产品组成性能更佳的系统。总之,三层模式的Browser/Server结构从根本上弥补了传统的二层模式的Client/Server结构的缺陷,是应用系统体系结构中一次深刻的变革。

7. Socket

​ 我们了解了协议的基本概念,协议之间的关系,与层级之间的关联,完成立对网络的一个理解,当我们在QQ微信给别人发送消息时,就是通过这些层级数据传输的协议去传输我们的内容,或是我们浏览网页,打开一个百度页面,都是基于协议传输的数据显示请求的页面,那我们如何去实现这些?不可能每一步都需要去写,从最底层开始写起,那就太麻烦了,由此引出一个概念Socket,需要一一解答的问题,Socket在哪里?Socket是什么?目的是为了做什么?先看下图

网络与并发(一)_第6张图片

​ Socket也叫套接字(Socket)随着TCP/IP协议的使用,也越来越多地被使用在网络应用程序的构建中。实际上,Socket编程也已经成为网络中传送和接收数据的首选方法。套接字最早是由伯克利在BSD中推出的一种进程间通信方案和网络互联的基本机制。现在,已经有多种相关的套接字实现,但是大部分还是遵循着最初的设计要求。套接字相当于应用程序访问下层网络服务的接口。使用套接字,可以使得不同的主机之间进行通信,从而实现数据交换。

一个概念Socket,需要一一解答的问题,Socket在哪里?Socket是什么?目的是为了做什么?

​ Socket也叫套接字(Socket)随着TCP/IP协议的使用,也越来越多地被使用在网络应用程序的构建中。实际上,Socket编程也已经成为网络中传送和接收数据的首选方法。套接字最早是由伯克利在BSD中推出的一种进程间通信方案和网络互联的基本机制。现在,已经有多种相关的套接字实现,但是大部分还是遵循着最初的设计要求。套接字相当于应用程序访问下层网络服务的接口。使用套接字,可以使得不同的主机之间进行通信,从而实现数据交换。

​ Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

你可能感兴趣的:(Python,#,网络与并发,python,网络)