网络编程1_C/S架构, 网络通信流程, 初识socket

 一. C/S架构(客户端Client/服务端Server架构)
    1. 硬件 C/S架构: 打印机
    2. 软件 C/S架构: qq. 优酷. 浏览器等, 其中浏览器又比较特殊, 很对网站是基于浏览器来访问的, 浏览器和各个网站服务端进行的通讯方式又常被称为B/S架构(浏览器Browser/服务端Server架构)
二. 网络通信的整个流程
    1. 网卡和mac地址
    电脑想要联网, 首先要有一个网卡, 而且电脑要做好相关的网络配置
    电脑插网线的地方就做网卡,网卡提供了网络的接口,这是硬件上面的,大家都是到网口是吧,我怎么找到电脑的网卡呢,有人说用IP地址,IP地址并不是,而是全球唯一的mac地址,专门给网络设备设定的,是出厂的时候就给定好的,一个设备的mac地址号码是全球唯一的。 head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址。   mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
    查看mac地址的方法:windows下在cmd窗口输入ipconfig -all指令:下面显示的这个物理地址就是mac地址。
    由于mac地址很难记忆,所以又出现了IP地址,配置好自己电脑的网络信息之后,我们就有了身份证(mac地址)和名字(IP地址),通过他们,我们就在网络中有了自己的身份,只要有网,我们就可以正大光明的和别人进行通信了。
    arp协议功能:广播的方式发送数据包,获取目标主机的mac地址
    2. 网络通信流程描述:
    第一步:打开浏览器,想要请求访问京东,在地址栏输入了网址:www.jd.com。(www.jd.com是域名就是一个IP地址的名称,IP地址不好记,所有有了域名。)
    第二步:先将请求信息发给了交换机,然后交给了路由器,路由发给DNS服务器,通过DNS协议去找我们要访问的京东的IP地址:
    第三步:查到的京东服务器对应的IP地址之后,路由器通过路由协议找到一个路由转发的最优路径,将你的请求信息还送给这个IP地址的京东的路由器
    第四步:京东的路由器发给了京东网站的服务器上
    第五步:京东网站服务器按照来的时候的路径,在返回给你他自己的网站
    第六步:当你打开浏览器的时候,你的电脑给你的浏览器这个运行起来的程序给了一个编号,叫做端口号,当你的电脑收到京东发送过来的消息的时候,你的电脑通过端口号找到你的浏览器,你的浏览器拿到了京东的网站信息,然后将网站呈现在了自己的浏览器上
    3. 内网和外网:   
    所谓内网就是我们平常说的局域网。局域网就是在固定的一个地理区域内由2台以上的电脑用网线和其他网络设备搭建而成的一个封闭的计算机组。它可以是邻居之间的2台电脑,也可以是一幢100层大楼里的1000台电脑。局域网可以是独立封闭运行的,也可以是和外网相连接的。
    所谓外网,也就是广域网。是一种地域跨度非常大的网络集合。它是由无数个局域网+独立服务器构成的。注意,此处所说的局域网既可以是小型的广域网,也可以是局域网。
    实际上,从规模上来看我们很难分辨局域网与广域网,因为大小都是相对的。所以。真正局域网与广域网的分别是通过IP地址来实现的。
    任何一台电脑要上网,都必须在网络上有一个唯一的IP地址。在局域网内,这个IP地址是唯一的。但是在另外一个局域网,这个IP地址仍然能够使用。
    网络A里有一台IP地址为192.168.1.231的客户端,网络B里也可以有一台同样IP的电脑。那么。我们就说这2台机器分别在2个局域网里。但是在广域网内,所有的IP地址都是唯一的。山西电信的DNS服务器IP地址是61.134.1.4.那么,这个地址在全世界都是唯一的,不可重复的。这就是广域网和局域网的区别。
    如果只有内网的ip地址你是不能上网的,你上网肯定要通过一个外网地址,这个外网地址又称为公网地址,这个公网地址是全球唯一的,他在你的对外出口的路由器上,也就是你的外网网关地址。
三. DNS服务器
    当我们请求https:\\www.JD.com的时候,首先电脑会在本地的DNS缓存中找是否有这个DNS缓存(DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。 DNS是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,它是由域名解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,一个IP地址可以有多个域名,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器通常为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称为“域名解析”。)本地的DNS缓存是在我们访问过一个网站之后,例如京东,那么本地会保存一个京东域名和京东服务器IP地址的映射关系,将来再次请求的时候,就不用再到外部的DNS上查询这个域名对应的IP地址了,提高了效率,如果是第一次请求,请看上面的DNS查询过程
    步骤
    本地查询顺序:
    浏览器缓存: 浏览器会按照一定的频率缓存DNS记录。chrome://net-internals/#dns 查看chormeDNS缓存。
    操作系统缓存: 如果浏览器缓存中找不到需要的DNS记录,那就去操作系统中找。cmd命令ipconfig /displaydns 用于查看操作系统dns缓存。
    路由缓存: 路由器也有DNS缓存。 找本机的hosts文件 Windows host文件路径: C:\WINDOWS\system32\drivers\etc\hosts (由于直接修改之后不能保存,可以copy一份到桌面,修改之后,在替换掉原路径下的文件就可以了),hosts文件以静态映射的方式提供IP地址与主机名的对照表。
    ISP(网络服务提供商):如果还是没有,那么就去检查ISP有没有吧~,每一个ISP(网络服务提供商),或一个大学,甚至是一个大学里的系都会有一个自己的本地域名服务器,他会在url第一次访问时缓存该域名的指向。下次再访问时,他会从缓存里把这个url曾经指向的IP调出来。
    递归查询
    第一步:在hosts静态文件、DNS解析器缓存中查找某主机的IP地址
    第二步:上一步无法找到,去DNS本地服务器(即域服务器)查找,其本质是去区域服务器、服务器缓存中查找
    第三步:本地DNS服务器查不到就向ISP(ISP是互联网服务提供商(Internet Service Provider))的简称,ISP有专门的DNS服务器应对DNS查询请求。再找不到就根据‘根提示文件’向负责顶级域‘.com’的DNS服务器查询
    第四步:'根DNS服务器'根据查询域名中的'xyz.com',再向xyz.com的区域服务器查询
    第五步:www.xyz.abc.com的DNS服务器直接解析该域名,将查询到的ip再原路返回给请求查询的主机
    迭代查询:
    第一步:在hosts静态文件、DNS解析器缓存中查找某主机的IP地址
    第二步:上一步无法找到,在DNS本地服务器(即域服务器)查找所有本层次的区域服务器
    第三步:本地DNS服务器查不到就向ISP是互联网服务提供商(Internet Service Provider)的简称,ISP有专门的DNS服务器应对DNS查询请求。再找不到就查询上一层次的所有区域服务器,以此类推直至根域名DNS服务器‘.’
    第四步:到达根域名服务器后又向下查询,直至查到结果为止。
    迭代查询与递归查询结合
    递归查询需要经过逐层查询才能获得查询结果,当查询具有许多层次的DNS结构时效率很低,所以一般采用两者相结合的查询方式。
    第一步:在hosts静态文件、DNS解析器缓存中查找某主机的ip地址
    第二步:上一步无法找到,去DNS本地服务器(即域服务器)查找,其本质是去区域服务器、服务器缓存中查找
    第三步:本地DNS服务器查不到就向ISP是互联网服务提供商(Internet Service Provider)的简称,ISP有专门的DNS服务器应对DNS查询请求。再找不到就根据‘根提示文件’向负责顶级域‘.com’的根DNS服务器查询
    第四步:根DNS服务器直接将其区域DNS服务器的ip地址返回给本地服务器,而不用再向xyz.com的区域服务器查询。
    第五步:(京东有自己DNS服务器)本地DNS服务器将结果返回给请求的主机
四. 总结及其他一些内容简介
    最后,至于路由是如何进行转发的、内部路由表是如何保存的、网关是如何计算最后传输路线的、路由的内网是如何划分的、DHCP和静态IP是如何设置的,DHCP又是如何分配IP地址的,交换机内部工作原理、路由和交换机如何进行配置等等,我们在本篇博客上就不进行深入研究了,本篇博客是为了让小白同学熟悉一下网路相关知识。谢谢大家谅解,如何大家想了解其他的内容,请给我留言,我就会把相关内容整理出来,分享给大家。你的问题是我们共同进步的动力。
    为什么说qq这种p2p的网络通信方式比较特殊呢,因为它是两个局域网的电脑或者手机进行通讯,双方不能确定对方的IP地址,因为你的qq也不知道在哪里登陆,用什么网络,对吧,也就是说双方不知道对方的IP地址,怎么办,需要借助第三方承接,就是腾讯,那么这里面就涉及到了udp打洞,net穿透等技术,有兴趣的可以去了解一下,腾讯为什么nb,也是因为它基本上是国内第一家实现了这些技术的公司,让我们的qq沟通更加方便。
五. 初识socket
    1. 服务端Server
    import socet
    server = socket.socket()
    ip_port = ("192.168.12.67", 8900)
    server.bind(ip_port)
    server.listen()
    conn, addr = server.accept()
    from_client_msg = conn.recv(1024)
    print(from_client_msg.decode("utf-8"))
    conn.close()
    server.close()
    2. 客户端Client
    import socket
    client = socket.socket()
    server_ip_port = ("192.168.12.67", 8900)
    client.connect(server_ip_port)
    to_server_msg = input("输入对server发送的信息:")
    client.send(to_server_msg.encode("utf-8"))
    client.close()
 

转载于:https://www.cnblogs.com/guyannanfei/p/10210706.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值