主要内容:浏览器
1.客户端 \ 服务端架构服务器
客户端英文名称:Client,服务端英文名称Server, 所谓C\S架构就是说Client\Server微信
2.网络通讯的整个流程网络
以本地的电脑上的浏览器去访问的京东网站的整个流程这种B\S架构来举例架构
(1)网卡和mac 地址socket
(2) IP地址网站
(1)IP地址的格式编码
编码的回顾: 一个字节等于8位,8个2进制的数能够表示256个字节此处IP地址是由点分割的四个十进制的数,而十进制的数在计算机中是由二进制表示的,即spa
(2)网络配置的大体方法code
配置好本身电脑的网络信息以后,咱们就有了身份证(mac地址)和名字(IP地址),经过他们,咱们就在网络中有了本身的身份,只要有网,咱们就能够正大光明的和别人进行通讯了
(2)网络通讯流程
arp协议功能:广播的方式发送数据包,获取目标主机的mac地址
流程:
第一步:打开浏览器,想要请求访问京东,在地址栏输入了网址:www.jd.com。(www.jd.com是域名就是一个IP地址的名称,IP地址很差记,全部有了域名。)
第二步:先将请求信息发给了交换机,而后交给了路由器,路由发给DNS服务器,经过DNS协议去找咱们要访问的京东的IP地址:
第三步:查到的京东服务器对应的IP地址以后,路由器经过路由协议找到一个路由转发的最优路径,将你的请求信息还送给这个IP地址的京东的路由器
第四步:京东的路由器发给了京东网站的服务器上
第五步:京东网站服务器按照来的时候的路径,在返回给你他本身的网站
第六步:当你打开浏览器的时候,你的电脑给你的浏览器这个运行起来的程序给了一个编号,叫作端口号,当你的电脑收到京东发送过来的消息的时候,你的电脑经过端口号找到你的浏览器,你的浏览器拿到了京东的网站信息,而后将网站呈如今了本身的浏览器上
(3) 内网和外网
实际上,从规模上来看咱们很难分辨局域网与广域网,由于大小都是相对的。因此。真正局域网与广域网的分别是经过IP地址来实现的。
任何一台电脑要上网,都必须在网络上有一个惟一的IP地址。在局域网内,这个IP地址是惟一的。可是在另一个局域网,这个IP地址仍然可以使用。(网络A里有一台IP地址为192.168.1.231的客户端,网络B里也能够有一台一样IP的电脑。那么。咱们就说这2台机器分别在2个局域网里。可是在广域网内,全部的IP地址都是惟一的,不可重复)
若是只有内网的ip地址你是不能上网的,你上网确定要经过一个外网地址,这个外网地址又称为公网地址,这个公网地址是全球惟一的,他在你的对外出口的路由器上,也就是你的外网网关地址
3.DNS服务器
4.交换机,路由器和网关(含DHCP)
(1)网关
那么网关究竟是什么呢?网关实质上是一个网络通向其余网络的IP地址。好比有网络A和网络B,网络A的IP地址范围为 “192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的状况下,两个网络之间是不能进行TCP/IP通讯的,即便是两个网络链接在同一台交换机(或集线器)上, TCP/IP协议也会根据子网掩码(255.255.255.0)断定两个网络中的主机处在不一样的网络里。而要实现这两个网络之间的通讯,则必须经过网关。若是网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它本身的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此。
(2)路由器&交换机
路由器对外部网络的通讯都是经过外网接口(wan口)去转发出去的,也就是无论你是内网中的哪一个电脑,你的请求都要经过路由的外网接口发送出去,别人对你的请求都是经过外网接口接收进来的,
至于路由器上对内的lan口是怎么分配IP地址给内网的,要看路由器怎么设置划分vlan也就是子网(内部局域网),每一个lan口的IP地址能够是静态的,也能够是动态分配的(DHCP协议),并且能够划分网段,例如:个人1号lan口对接的网段是192.168.1.0-192.168.1.255,那么全部这个网段的电脑的信息进出都走这个lan口到路由器上,对于链接路由器的交换机来说,主要的做用就是搭桥用的,搭桥的意思就是让链接该交换机的全部电脑都可以链接起来,只要是同一个网段的互相均可以进行通讯,固然这个也要看交换机怎么配置,
(3)DHCP
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工做, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员做为对全部计算机做中央管理的手段 交换机又分二层交换机和三层交换机,二层交换机主要就是个搭桥的做用,三层交换机还兼有路由的做用,通常如今的交换机都有DHCP功能,也就是说交换机下面链接的这些电脑的子网IP或者说是局域网IP也能够由交换机来动态生成和分配,路由器和交换机所生成的子网IP都是本身在路由器和交换机上设置的,和路由器上的外网IP没有关系,具体的划分又分为24位的16位的等等,举例:24位的就是10.11.1.0-10.11.1.255这256个IP地址,0表示后面的8bit是00000000,255表示后面的8bit是11111111
5.初识socket
#编写服务端 import socket #建立一个socket对象 server = socket.socket() #建立一个手机 ip_port =("192.168.15.51",8900) #绑定ip地址和端口 server.bind(ip_port) #监听ip地址和端口 server.listen() print("等待中...0101") #等待客户端的链接 conn,addr = server.accept() #阻塞住 #接受消息 from_client_msg = conn.recv(1024) #接收的消息是bytes类型,须要转换为字符串 print(from_client_msg.decode("utf-8")) conn.send("盖浇饭".encode("utf-8")) conn.close() server.close()
#编写客户端 import socket client = socket.socket() server_ip_port = ("192.168.15.51",8900) #链接服务端 client.connect(server_ip_port) #发消息 client.send("中午吃啥".encode("utf-8")) #send里的消息必须是字节类型 from_server_msg = client.recv(1024) print(from_server_msg.decode("utf-8")) #关闭链接 client.close()
交互式的应答:
#编写服务端 import socket server = socket.socket() ip_port = ("192.168.15.51",8900) server.bind(ip_port) server.listen() print("等待消息中...0101") conn , addr = server.accept() #等待客户链接 #能够接收消息 while 1: from_client_msg = conn.recv(1024) print(from_client_msg.decode("utf-8")) msg = input("客服:") conn.send(msg.encode("utf-8")) conn.close() server.close()
#编写服务端 import socket client = socket.socket() server_ip_port = ("192.168.15.51",8900) client.connect(server_ip_port) #发消息 while 1: msg = input("客户留言:") client.send(msg.encode("utf-8")) from_server_msg = client.recv(1024) print(from_server_msg.decode("utf-8")) client.close()
练习题