网络编程

 架构 -- 程序员开发的一种模式程序员

C/S    客户端/服务器模式面试

B/S      Browser浏览器/服务器编程

(B/S      Browser浏览器/服务器至关于网页版的客户端,例如 网页QQ 网页微信,游戏等)设计模式

B/S架构的优点: 统一了应用的接口浏览器

 

 

网络通讯编程:
 两台电脑  如何通讯?      --- 一条网线就能够办到
 
 多台电脑  如何通讯?      --- 交换机
 
 更多太电脑  如何通讯?    --- 交换机+路由器安全


[   两台电脑怎么会通讯呢?
   每台电脑都会有个网卡,  在usb接口处    网卡:mac地址    mac地址:物理地址
   网卡通常是由网卡生产厂商给的 ,不能随便给,要遵循必定规则.  为何呢?
   由于mac地址要求全球惟一                                                                                         
]服务器

 mac 地址:
 在cmd中查看命令  ipconfig  -all
 --------mac地址是12位十六进制组成---------微信

-------ip 地址是四位点分十进制  字节是8位--------网络

服务器1寻找服务器2的mac地址步骤:
1,发送请求帧给交换机
2,交换机以广播方式找寻服务器2
3,服务器2接收到请求返回给交换机
4,交换机以单薄方式返回给服务器1架构

整个过程就是服务器1 经过服务器2的ip地址,借助交换机的功能,找到了服务器2的mac地址(arp协议)

arp协议: 经过目标ip地址获取目标mac地址  

 

 

 

端口:操做系统为每个应用程序分配一个端口号 ip+端口号惟一肯定惟一程序

若是给你一个ip地址,如何去肯定它是否是在你当前的局域网内呢?
 ip地址  &(余)  子网掩码

 ex:
     ip地址    192.168.1.12
          1100 0000 . 1010 1000 . 0000 0001 . 0000 1100
  
          1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
    
     结果 1100 0000 . 1010 1000 . 0000 0001 . 0000 0000
       ---> 192.168.1.0 网段
    
  子网掩码  255.255.255.0
 

子网掩码: 是与ip地址进行余运算获得网段


  用网段来肯定一个ip地址是否在你当前的局域网内.
 
  网段 = ip地址    &     子网掩码


[如何寻找外网? (本身的理解)
 服务器会记录ipv4(好比 www.baidu.com) 发送给交换机
 交换机发现我没有,而后发给路由器没有的话,发送给代理ip, 代理ip发送请求

 若是有两个班级,如何从这个班级寻找另外一个班的网呢?
 服务器1发送ip给交换机,交换机没有发送后给网关,网关发给路由器,路由器寻找,找到后进入

  寻找]


路由器:  有一个路由表 记录了归他管理的全部网段

局域网 :   两台电脑也算是局域网,
广域网:  泛指国际, 国际上中国就算是一个局域网

                                                                                                                                             协议:  由多人指定的一种规则                                                                                                    

TCP 和UDP协议 (通讯协议)
 是经过socket模块去操做 tcp和udp协议的


它们两个的区别是什么??
 1.tcp协议: 表明安全可靠通讯方式 面向链接
 2.udp协议: 不安全,不可靠的通讯方式,可是快!!

 

 

ip地址:127.0.0.1  
这是个回环地址,不管何时均可以表明本机ip地址(只限本机使用)

 

 

 

 

 

有一道面试题:
 
tcp协议:
 三次握手: 注意必须是client(客户端) 先发起请求
  1,client发送给server(服务端)我想链接你,能够么
  2,server回复client, 能够,我也想链接你,能够吗?
  3,client回复server, 能够

 四次挥手: 谁先发起请求均可以
  1,client发送请求:我准备断开链接了,我没有数据须要发送了
   若是你有数据能够继续发给我
  2,server回复: 确认接收到你的请求,我开始着手准备断开事宜
  3,server回复: 我准备好了,能够随时断开链接
  4,client回复:断开链接吧

 

面试该怎么回答三次握手四次挥手呢?

  三次握手:

      首先必须先由客户端发起链接的请求,接下来,服务器接收到请求以后,回复给客户端两个标识,

      syn表示服务器接收到的请求,一个ack表示服务器在作准备工做,两个标识一块儿回复给客户端

      最后,客户端接收到服务器的回复,客户端准备链接的全部资源,开始进行链接,发送给服务器一

      个ack表示客户端的链接准备工做已经完成.(此时表示客户端和服务器能够相互链接了.)

      -------若是面试官问 哪句代码体现了三次握手?

      ------- 回答: 服务器端的accept,客户端 connect   

  

  四次挥手:

      ⑴ 首先由链接双方任意一方发起断开链接的请求,发起方发送的请求表示是我没有数据要继  

       续发送了,能够断开链接了,可是你若是还有数据能够继续向我发送数据

      ⑵接收方回复给发起方,表示接到了发起方的断开请求,开始着手准备断开事宜

      ⑶接收方准备完成后,给发起方发送一个标识,标识接收方没有数据发送了,能够断开链接了

      ⑷发起方接受到消息后,准备断开链接,回收资源

      ---------若是面试官问:哪句代码体现了四次挥手?

      ---------回答: close()

 

socket概念

 

理解socket

Socket是应用层与TCP/IP协议族通讯的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来讲,一组简单的接口就是所有,让Socket去组织数据,以符合指定的协议。

其实站在你的角度上看,socket就是一个模块。咱们经过调用模块中已经实现的方法创建两个进程之间的链接和通讯。
也有人将socket说成ip+port,由于ip是用来标识互联网中的一台主机的位置,而port是用来标识这台机器上的一个应用程序。
因此咱们只要确立了ip和port就能找到一个应用程序,而且使用socket模块来与之通讯。

 

互联网协议与osi模块
 osi 五层模型:
  应用层  : .py文件
                  http,ftb,tftb...
  传输层  : tcp/udp
  网络层  : ip协议
  数据链路层  : arp协议  ,网卡
  物理层  : 网线,集线器,光纤

相关文章
相关标签/搜索