Python 网络编程之网络协议(未完待续)
一:网络编程从两大架构开始
1.网络开发的两大架构
c/s 架构 : client server
B/S 架构 : Brower server
(1)bs 和 cs 架构之间的关系?
(2)哪一种架构更好呢?
1.c/s 架构
client : 客户端
qq , 微信, 飞秋 , 王者荣耀 ,英雄联盟,泡泡卡丁车,魔兽世界,网易云音乐,有道翻译
server : 服务端
百度,阿里,腾讯,大型公司,自己建设自己的服务器,
个人电脑也可以搭建成服务器,但是性能太差,不推荐使用.
- B/S 架构
Brower 浏览器
通过输入网址,向对方服务器发送请求,对方服务响应之后,把对应数据返回
Server 服务器
B/S 架构的程序是未来软件的发展趋势.
不管哪个架构,他们都要进行网络通信,基本都要用socket,我们学习socekt就是为了完成C\S架构项目的开发
以上不管是C/S架构还是B/S都需要通过网络.
二:网络通信协议
基础概念
#一台主机有两个重要标识:
(1)mac地址:标记一台机器的物理地址 (不可变)
(2)ip 地址:#标记一台机器的逻辑地址 (可变)
IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。ip地址分为两种 ipv4 和 ipv6:
#分类ipv4 和 ipv6:
ipv4地址是一个32位的二进制数
ipv6地址是一个128位的二进制数
ipv4: 以4段点分十进制表示 X.X.X.X => 范围
0.0.0.0 ~ 255.255.255.255 地址范围2^32-1
ipv6 : 以8段冒分十六进制表示 X:X:X:X:X:X:X:X => 范围
0:0:0:0:0:0:0:0 ~ FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 地址范围2^128-1
ip地址的最后一位0或者255 两个数字不能用,一般最后一位0表达的是网段,255代表广播地址
#网段 : 网段的作用,主要用来划分同一区域里的某些机器是否能够互相通信。在一个网段里可以不同过因特网,直接对话
判别的依据:如果IP地址和子网掩码相与得到的值相同就是同一网段
#内网 : 以下地址为预留地址,永远不会被当做公网ip来分配
192.168.0.0 - 192.168.255.255
172.16.0.0 - 172.31.255.255
10.0.0.0 - 10.255.255.255
#外网 :
在任何地方都可以访问的就是外网(排除防火墙的因素)
#子网掩码:区分网段和主机
255.255.255.0 / 255.255.0.0 / 255.0.0.0
ip1:192.168.10.12 ip2:192.168.1.16
#端口:"端口"是英文port的意译,是具体某个程序与外界通讯的出口。 取值范围:0~65535
使用时至少8000以上 访问地址加端口:192.168.2.1:8000
#局域网:在同一区域内由多台计算机互联形成通讯。【具有可重复的内网ip】
#广域网:在不同区域内有多台计算机互联形成通讯。【具有唯一的公网ip】
#交换机:对同一网段的不同机器之间进行数据转发的设备 [每一台机器和交换机相连,形成通信]
#路由器:对不同网段的不同机器之间进行数据转发的设备 [每一个局域网和路由器相连,形成通信]
#arp协议:每台主机都有arp缓存表 ,主要作用通过ip找mac的一个协议规则
【实现方式:通过交换机一次广播,一次单播找到的】
Arp表:保存着ip地址和mac地址对应关系
Arp协议:通过ip地址获取mac地址
#DHCP:自动分配IP地址
osi七层模型
人们按照分工不同把互联网协议从逻辑上划分了层级: osi4层,osi5层,osi7层 三类模型
对此我们需要知道每一层的协议有什么:
紧接着我们需要各层的功能有是哪些:
【1】物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换),这一层的数据叫做比特。
【2】数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问,这一层通常还提供错误检测和纠正,以确保数据的可靠传输。
【3】网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择,Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
【4】传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的), 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组,常常把这一层数据叫做段。
【5】会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路,主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
【6】表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
【7】应用层: 是最靠近用户的OSI层,这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
各层中涉及的协议的简单解释:
应用层
·DHCP(动态主机分配协议)
· DNS (域名解析)
· FTP(File Transfer Protocol)文件传输协议
· Gopher (英文原义:The Internet Gopher Protocol 中文释义:(RFC-1436)网际Gopher协议)
· HTTP (Hypertext Transfer Protocol)超文本传输协议
· IMAP4 (Internet Message Access Protocol 4) 即 Internet信息访问协议的第4版本
· IRC (Internet Relay Chat )网络聊天协议
· NNTP (Network News Transport Protocol)RFC-977)网络新闻传输协议
· XMPP 可扩展消息处理现场协议
· POP3 (Post Office Protocol 3)即邮局协议的第3个版本
· SIP 信令控制协议
· SMTP (Simple Mail Transfer Protocol)即简单邮件传输协议
· SNMP (Simple Network Management Protocol,简单网络管理协议)
· SSH (Secure Shell)安全外壳协议
· TELNET 远程登录协议
· RPC (Remote Procedure Call Protocol)(RFC-1831)远程过程调用协议
· RTCP (RTP Control Protocol)RTP 控制协议
· RTSP (Real Time Streaming Protocol)实时流传输协议
· TLS (Transport Layer Security Protocol)安全传输层协议
· SDP( Session Description Protocol)会话描述协议
· SOAP (Simple Object Access Protocol)简单对象访问协议
· GTP 通用数据传输平台
· STUN (Simple Traversal of UDP over NATs,NAT 的UDP简单穿越)是一种网络协议
· NTP (Network Time Protocol)网络校时协议
传输层
·TCP(Transmission Control Protocol)传输控制协议
· UDP (User Datagram Protocol)用户数据报协议
· DCCP (Datagram Congestion Control Protocol)数据报拥塞控制协议
· SCTP(STREAM CONTROL TRANSMISSION PROTOCOL)流控制传输协议
· RTP(Real-time Transport Protocol或简写RTP)实时传送协议
· RSVP (Resource ReSer Vation Protocol)资源预留协议
· PPTP ( Point to Point Tunneling Protocol)点对点隧道协议
网络层
IP(IPv4 · IPv6) Internet Protocol(网络之间互连的协议)
ARP : Address Resolution Protocol即地址解析协议,实现通过IP地址得知其物理地址。
RARP :Reverse Address Resolution Protocol 反向地址转换协议允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。
ICMP :(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
ICMPv6:
IGMP :Internet 组管理协议(IGMP)是因特网协议家族中的一个组播协议,用于IP 主机向任一个直接相邻的路由器报告他们的组成员情况。
RIP : 路由信息协议(RIP)是一种在网关与主机之间交换路由选择信息的标准。
OSPF : (Open Shortest Path First开放式最短路径优先).
BGP :(Border Gateway Protocol )边界网关协议,用来连接Internet上独立系统的路由选择协议
IS-IS:(Intermediate System to Intermediate System Routing Protocol)中间系统到中间系统的路由选择协议.
IPsec:“Internet 协议安全性”是一种开放标准的框架结构,通过使用加密的安全服务以确保在 Internet 协议 (IP) 网络上进行保密而安全的通讯。
数据链路层
802.11 · 802.16 · Wi-Fi · WiMAX · ATM · DTM · 令牌环 · 以太网 · FDDI · 帧中继 · GPRS · EVDO · HSPA · HDLC · PPP · L2TP · ISDN
物理层
以太网物理层 · 调制解调器 · PLC · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线
我们现在只需要了解五层的协议就好了,ok吗?我们写的程序属于哪一层呢,属于应用层。
局域网模型
局域网内,各个主机的通讯
广域网模型
广域网内,各个主机的通讯