socket
讲在前面:
MAC地址世界唯一, 交换机只认mac, 有(广播/单播/组播)之分, 路由器路由表认识IP地址(虚拟地址,随时间/空间变化而变化).
IP 127.0.0.1 回环地址 测试地址 本机通讯 不涉及交换机,路由器 ,和外机通信要写实际 ip 地址.
arp 协议: a机器-->交换机---> 广播 正确的机器都到广播--->返回MAC给交换机 ---> a机器(单播)
按位与
两个网段信息一致说明在一个交换机内 ,不一致要用路由器.
两台机器间 只要 一根网线就能通信.
网络开发的架构:
c/s ---客户端应用client/服务端server
b/s ---web浏览器客户端browser/服务端server
b/s 是特殊的 c/s , b/s架构更好为啥呢? 因为基于web浏览器减少了桌面应用的安装,解放了你的桌面图标,web编程都是b/s架构的.
计算机-网卡-是 硬件. 在数据链路层
MAC--物理地址 全世界唯一的 (head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址。mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
广播 --- 主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号,但只将一个频道的信号还原成画面。在数据网络中也允许广播的存在,但其被限制在二层交换机的局域网范围内,禁止广播数据穿过路由器,防止广播数据影响大面积的主机。
ip地址与ip协议 --- 点分十进制
- 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
- 范围0.0.0.0-255.255.255.255
- 一个ip地址通常写成四段十进制数,例:172.16.10.1
- ipv6---6位冒号分16进制 0:0:0:0:0:0---255:255:255:255:255:255 据说强大到可以给沙滩上每粒沙子都分配个地址--哈哈也是醉了
arp协议 ——查询IP地址和MAC地址的对应关系
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址。
知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是)
osi七层模型
互联网的核心就是由一堆协议组成,协议就是标准,比如全世界人通信的标准是英语,如果把计算机比作人,互联网协议就是计算机界的英语。所有的计算机都学会了互联网协议,那所有的计算机都就可以按照统一的标准去收发信息从而完成通信了。
套接字--socket 引言--(Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简 单的接口就是全部,让Socket去组织数据,以符合指定的协议.
其实站在你的角度上看,socket就是一个模块。我们通过调用模块中已经实现的方法建立两个进程之间的连接和通信。
也有人将socket说成ip+port,因为ip是用来标识互联网中的一台主机的位置,而port是用来标识这台机器上的一个应用程序。
所以我们只要确立了ip和port就能找到一个应用程序,并且使用socket模块来与之通信。)
人们按照分工不同把互联网协议从逻辑上划分了层级:
应用层 (应用,表示,会话) python代码 http https(加密 证书) ftp smtp(邮件)
------------socket------ 抽象层----
传输层 TCP UDP 端口(port) 4层路由器 4层交换机
网络层 ip 3层路由器 3层交换机
数据链路层 mac地址 / arp 协议 2层交换机 网卡
物理层 网线
上个图: