一:网络编程从两大架构开始

1.网络开发的两大架构

c/s 架构 : client  server

B/S 架构 : Brower  server

(1)bs 和 cs 架构之间的关系?

(2)哪一种架构更好呢?

1.c/s 架构

client : 客户端

qq , 微信, 飞秋 , 王者荣耀 ,英雄联盟,泡泡卡丁车,魔兽世界,网易云音乐,有道翻译

server : 服务端

百度,阿里,腾讯,大型公司,自己建设自己的服务器,

个人电脑也可以搭建成服务器,但是性能太差,不推荐使用.

  1. 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吗?我们写的程序属于哪一层呢,属于应用层。

局域网模型

局域网内,各个主机的通讯

广域网模型

广域网内,各个主机的通讯

Python 网络编程之网络协议(未完待续)的更多相关文章

  1. [python]爬代理ip v2.0(未完待续)

    爬代理ip 所有的代码都放到了我的github上面, HTTP代理常识 HTTP代理按匿名度可分为透明代理.匿名代理和高度匿名代理. 特别感谢:勤奋的小孩 在评论中指出我文章中的错误. REMOTE_ ...

  2. python 面向对象的基本概念(未完待续)

    面向对象编程简称OOP(Object-oriented-programming),是一种程序设计思想. 面向过程编程(如C语言)指一件事该怎么做,面向对象编程(如Java.python)指一件事该让谁 ...

  3. Python基础:内置类型(未完待续)

    本文根据Python 3.6.5的官文Built-in Types而写. 目录 1.真值测试 2.布尔操作 -- and, or, not 3.比较 4.数字型 -- int, float, comp ...

  4. Python网络编程之网络基础

    Python网络编程之网络基础 目录 Python网络编程之网络基础 1. 计算机网络发展 1.1. OSI七层模型 1.2. 七层模型传输数据过程 2. TCP/IP协议栈 2.1 TCP/IP和O ...

  5. C#网络编程之---TCP协议的同步通信(二)

    上一篇学习日记C#网络编程之--TCP协议(一)中以服务端接受客户端的请求连接结尾既然服务端已经与客户端建立了连接,那么沟通通道已经打通,载满数据的小火车就可以彼此传送和接收了.现在让我们来看看数据的 ...

  6. Go web编程学习笔记——未完待续

    1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...

  7. UNIX环境高级编程——TCP/IP网络编程 常用网络信息检索函数

    UNIX环境高级编程——TCP/IP网络编程   常用网络信息检索函数 gethostname()   getppername()   getsockname()   gethostbyname() ...

  8. 老师的blog整理 .网络编程部分 .网络编程部分 前端部分 django基础部分

    老师的blog整理 .网络编程部分 .网络编程部分 前端部分 django基础部分   老师的blog整理 python基础部分: 宝哥blog: https://www.cnblogs.com/gu ...

  9. 使用IntelliJ IDEA进行Python远程调试的需求(未完)

    使用IntelliJ IDEA进行Python远程调试的需求(未完) 在研究深度学习Machlearning时,有时候需要借助ubuntu搭建的tensorflow环境,另外也有越来越多的运算程序只能 ...

随机推荐

  1. Python中的lambda函数介绍

    Lambda函数,即Lambda 表达式(lambda expression),是一个匿名函数(不存在函数名的函数),Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lam ...

  2. #P2010 回文日期 的题解

    题目描述 在日常生活中,通过年.月.日这三个要素可以表示出一个唯一确定的日期. 牛牛习惯用88位数字表示一个日期,其中,前44位代表年份,接下来22位代表月 份,最后22位代表日期.显然:一个日期只有 ...

  3. springboot+mybatis多数据源

    首先,既然是多数据源,那么我们就先看下数据源怎么配置的: javaconfig类似下面这样: MapperScan注解常用配置如下: basePackages:Base packages to sca ...

  4. 多项式输出 (0)<P2009_1>

    多项式输出 (poly.pas/c/cpp) [问题描述] 一元n次多项式可用如下的表达式表示: 其中,称为i次项,ai称为i次项的系数.给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输 ...

  5. Airless Pump Bottle For The Rise Of Cosmetic Packaging Solutions

    Airless Pump Bottle    are used in the rise of cosmetic packaging solutions. According to the suppli ...

  6. java.util.ConcurrentModificationException 异常原因和解决方法

    不要在 foreach 循环里进行元素的 remove/add 操作.remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁. 注意: 1.foreach遍历 ...

  7. vue学习笔记:Hello Vue

    编写简单例子,了解下基本语法 <!DOCTYPE html> <html> <head> <meta charset="utf-8 "&g ...

  8. @implementer,抽象类,接口

    @implementer,抽象类,接口 1.      implementer 在看twisted源码时,经常出现@implementer(IReactorFDSet) 它来自zope.interfa ...

  9. Atom离线插件安装

    1.下载原始的插件包 2.解压放入atom的packages文件夹中 3.通过nodejs的npm指令进行安装 运行->cmd 4.重启atom就好了.

  10. Android开发:界面设计之六大layouts介绍

    1.帧布局 FrameLayout: FrameLayout是最简单的布局对象.在它里面的的所有显示对象都将固定在屏幕的左上角,不能指定位置,后一个会直接覆盖在前一个之上显示 因为上面的一段话这个是在 ...