zoukankan      html  css  js  c++  java
  • 网络通信

    一、CS架构于BS架构(客服端/服务端架构)

    1、CS架构:

    client(客户端) <-------------> server (服务端)

    2、BS架构:

    (是CS架构的一种,只不过将客户端换成了网页端)

    Browser(网页端) <-------------> server (服务端)

    二 、网络通信

    网络存在的意义就是跨地域数据传输=》称之为通信

    网络=物理链接介质+互联网通信协议

    三 OSI七层协议:

    互联网的核心就是由一堆协议组成,协议就是标准,比如全世界人通信的标准是英语,人们按照分工不同把互联网协议从逻辑上划分了层级。

    五层协议:

    应用层(应用层、表示层、会话层)

    传输层

    网络层

    数据链路层

    物理层

    协议:规定数据的组织格式

    格式:头部+数据部分

    数据外加头,相当于发快递是的封装包裹的过程;拆掉头部拿到数据相当于取快递拆包裹拿到东西(数据)的过程

    四、tcp/ip五层协议

    计算机1: 计算机2:

    应用层 应用层
    传输层 传输层
    网络层 网络层
    数据链路层 数据链路层
    物理层 <=交互机=> 物理层
    0101010101010

    (源mac地址,目标mac地址)(源ip地址,目标ip地址)数据

    4.1 物理层

    由来:

    孤立的计算机之间想要进行交互,就必须接如internat,就是说计算机指点必须进行组网

    功能:基于电器特性发送/接收高低频信号(01010)

    4.2 数据链路层

    由来:不进行分组的单纯的电信号没有任何的意义,所以必须规定多少位电信号为 一组,每组是什么意思

    功能:定义了电信号的分组方式

    早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet

    4.21 以太网协议

    ethernet规定:

    1)一种电信号构成的数据包,叫做'帧'

    2)每一组数据帧分成:报头(头部)heat和数据data两部分

    数据帧: heat data

    2.1)head包含(固定18个字节):

    发送者/源地址 6个字节

    接收者/目标地址 6个字节

    数据类型    6个字节

    2.2)data包含(最短46个字节,最长1500字节,一段超过了最大限制就会分片发送)

    3)数据包的具体内容

    head 长度+data长度=最短64个字节,最长1518字节,超过最大限制就会分片发送

    4.22 mac地址:

    head中包含的源地址和目标地址的由来:

    ethernet规定接入internet对的设备都必须具备网卡,发送端和结束端的地址便是网卡的地址,即mac地址

    mac地址:每块网卡出厂的时候都会被烧制上一个时间独一无二的mac地址,长度为48为的二进制,一般有12位16进制表示(前六位表示的是出厂的厂商编号,后六位是流水线号)

    以太网的才用最原始的方式,广播的方式进行通信。

    有了mac地址后,同一个网络类的两台主机就能通信了

    4.3 网络层

    由来:如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,这就不仅仅是效率低的问题了,这会是一种灾难

    必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,如果是就采用广播的方式发送,如果不是就采用路由的方式。

    功能:引入一套新的地址(ip)地址来区分不同的广播域/子网,这套新的地址就是网络地址

    4.3.1IP协议:

    1)规定网络地址的协议叫ip协议,由该协议定义的地址称之为ip地址,广泛才用的是v4版本即ipv4,它规定网络地址由32为二进制表示

    2)范围0.0.0.0-255.255.255.255

    3)一个ip地址通常写成四段二进制数,例:173.16.10.1

    ip地址分为两部分:

    1. 网络部分:标识子网

    2)主机部分:标识主机

    注意:单纯的ip地址只是标识了ip地址的种类,从网络部分或主机部分都无法识别一个ip所处的子网

    例:172.16.10.1与172.16.10.2并不能确定二者处于同一子网

    4.3.2 子网掩码:

    子网掩码,表示网络特征的一个参数,形式上等同于ip地址,也是32位的二进制数字;他的网络部分全为1,主机部分全为0,如果知道网络部分是前24 位,那么主机部分就是后8位,可以推算出子网掩码为:11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

    比如,已知IP地址172.16.10.1和172.16.10.2的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,

    172.16.10.1:10101100.00010000.00001010.000000001

    255255.255.255.0:11111111.11111111.11111111.00000000

    AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0

    172.16.10.2:10101100.00010000.00001010.000000010

    255255.255.255.0:11111111.11111111.11111111.00000000

    AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0

    结果都是172.16.10.0,因此它们在同一个子网络。

    总结:

    IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

    4.2.3 ARP协议

    由来:通信是基于mac的广播方式实现的,计算机在发包时,能很容易的获取到自身的mac地址,但是怎样才能获取到目标主机的ma地址呢?这个时候就需要通过arp协议来实现。

    功能:广播的方式发送数据包,获取目标主机的mac地址

    协议工作方式:每台主机ip都是已知的

    例如:主机172.16.10.10/24访问172.16.10.11/24

    一:首先通过ip地址和子网掩码区分出自己所处的子网

    场景 数据包地址
    同一子网 目标主机mac,目标主机ip
    不同子网 网关mac,目标主机ip

    二:分析172.16.10.10/24与172.16.10.11/24处于同一网络(如果不是同一网络,那么下表中目标ip为172.16.10.1,通过arp获取的是网关的mac)

    源mac 目标mac 源ip 目标ip 数据部分
    发送端主机mac 发送端mac FF:FF:FF:FF:FF:FF 172.16.10.10/24 172.16.10.11/24 数据

    三:这个包会以广播的方式在发送端所处的自网内传输,所有主机接收后拆开包,发现目标ip为自己的,就响应,返回自己的mac

    4.4 传输层

    由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到了主机,但是每台主机上都安装有各个应用程序(lol,吃鸡),怎么才能对应到应用程序上呢?答案就是端口,端口是应用程序与网卡关联的编号

    功能:建立端口到端口的通信

    补充:端口范围为0-65536,前面0-1023 为系统的占用端口

    tcp协议:

    可靠传输,tcp数据包没有长度的限制,在理论上是可以无限长的,但是为了保证网络的效率,通常tcp数据包的长度不会超过ip数据包的长度,这样能确保单个的tcp数据包不必子啊分割。

    以太网头 ip 头 tcp头 数据

    udp协议:

    不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

    以太网头 ip头 udp头 数据

    4.5 应用层

    由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的, 大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式

    功能:规定应用程序的数据格式。

    例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。

  • 相关阅读:
    高盛、沃尔玛 题做出来还挂了的吐槽
    amazon师兄debrief
    到所有人家距离之和最短的中点 296. Best Meeting Point
    问问题没人回答的情况怎么办终于有解了
    找名人 277. Find the Celebrity
    数组生存游戏 289. Game of Life
    547. Number of Provinces 省份数量
    428. Serialize and Deserialize Nary Tree 序列化、反序列化n叉树
    alias别名简介和使用
    面试官:线程池执行过程中遇到异常会发生什么,怎样处理? Vincent
  • 原文地址:https://www.cnblogs.com/zhangtieshan/p/12716323.html
Copyright © 2011-2022 走看看