互联网通信:
互联网的本质
连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准称之为互联网协议
互联网的本质就是一系列协议,总称为‘互联网协议’(Internet Protocol Suite)
互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通讯的标准
osi七层协议(五层协议)
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
每层运行常见的物理设备
tcp/ip五层协议
应用层,表示层,会话层可以并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能
1.物理层:一系列的物理连接介质,光纤,网线等等
发送的数据就是0101001100比特数据流,这些数据就是连续不断的收发01101100,拿到01001001没有用,你不知道数代表的意义。数据进行分组(按照一定规则),数据分组这件事物理层做不了。
物理层由来:上面提到,孤立的计算机之间想要进行通信,就必须接入Internet,言外之意就是计算机之间必须完成组网
物理层功能:主要是基于电器特性发送高低电压 (电信号),高压对应数字1,低电压对应数字0
是按照一定的协议对比特流数据进行分组
以太网协议:就是对数据进行分组,
以太网协议:一组构成一个数据报,叫做一帧
每一据帧分成:数据头(head)和数据date数据两部分
数据头:固定长度18个字节 ? 包含:源地址,目标地址,数据类型 ?
date数据:46字节,<=date<=1500字节
1.问题一:为什么数据头要固定? ?
固定就是一个标准,统一为了提取源地址以及目标地址 ?
2.问题二:在以太网协议地址如何设置唯一? ?
网线直接接触的硬件叫做网卡,网卡上有一个地址,mac地址,确定计算机的唯一性的物理地址 ? 网卡:12位 十六进制组成的一串数字,前六位厂商编号,后六位:流水线号 ? head(源地址,目标地址,数据类型)|date(传输的信息)
广播:计算机最原始的通信方式就是吼 数据的分组(原地址目标地址)+ 广播 理论上我的计算机就可以通信了,效率低每台计算机需要接收广播的消息,查看是否是给自己的数据,比广播风暴还要严重 所以广播是有范围的,在同一子网,局域网内通过广播的方式,发消息
数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思
数据链路层的功能:定义了电信号的分组方式
IP协议:确定对方的局域网的位置 ? 广播,mac地址+ip==可以找到世界上任意一台计算机 ? 计算机的通信:计算机的软件与服务器的软件进行通信
广播,mac地址+ip+端口协议==可以找到世界上任意一台计算机对应的软件
qq:发送数据:‘今晚吃饭’------>{id:‘念‘,content:‘今晚吃饭‘} ? 将数据进行自己的方式进行封装,http FTP协议
服务器:大黑盒子,机房声音很大,随温度,湿度,等环境都有要求,双电源,双网卡,系统linux
详细解释中间环节一些特殊的功能:
数据经过以太网协议封装后,先要从局域网内进行吼,每次发消息,每次就要吼,这样效率很低(数据交给交换机,交换机在分发出去)
交换机自主学习功能:
1: FF-FF-FF-FF-FF-FF
2: FF-FF-FF-FF-FF-FF
3: FF-FF-FF-FF-FF-FF
4: FF-FF-FF-FF-FF-FF
5: 1D-CA-DF-5D-6F-5F
网口1:出来一条信息 第一次广播的形式发出去 网口1:源地址 :1D-CA-DF-5D-6F-BF 目标地址:1D-CA-DF-5D-6F-5F 消息:明天放假
2,3,4,5网口接收到消息,打开查看目标mac地址是否为自己的 5网口确定是自己的
每个网口都广播发消息一遍之后,对照表就够建好了,下一次在任意网口的 目的:避免局域网内每一次都广播的
就是通过对方的ip地址获取到对方的MAC地址
如果两个客户进行通信的时候,你不可能知道对方的mac地址么?但你必须知道对方的ip地址
IP+ARP协议 获取对方的MAC地址:
顺序:
物理层---->数据链路层(以太网协议,mac地址)---->网络层(ip协议)---->传输层(端口协议(udp协议和tcp协议))---->应用层
mac地址+广播的形式+IP地址+端口 ==锁定全世界范围内的任意一台计算机的某软件的位置
ip协议:ip地址+子网掩码确定计算机所在网段,子网,局域网 ipv4地址:四点分十进制 192.168.12.23 取值范围:0~255.0~255.0~255.0~255 子网掩码:一般是c类 255.255.255.0 ? ip地址+子网掩码如何确定局域网的位置? ? 计算方法:上下都为1,才为1,否则全为0 一个IP: 172.16.10.1 : 10101100.00010000.00001010.00000001 子网掩码: 255.255.255.0 : 11111111.11111111.11111111.00000000 10101100.00010000.00001010.00000000 网段,子网,局域网: 172.16.10.0 ? ? 另一个ip: 172.16.10.2: 10101100.00010000.00001010.00000010 子网掩码: 255.255.255.0 11111111.11111111.11111111.00000000 10101100.00010000.00001010.00000000 网段,子网,局域网: 172.16.10.0
一般情况下:C类子网掩码,一个局域网能承载多少计算机 C类子网掩码可以分配的ip数据:254个 一个局域网最多可以分配254个ip地址(同一个网内的ip地址不能相同)也就是可以连接254个计算机
通过ip地址与子网掩码可以去确定对方计算机是否和自己的计算机在同一子网 如果确定在同一子网:通过广播+单播就可以通信 如果不在同一子网:通过网关和路由器
协议找到对方局域网所在的路由器,由此路由器进行广播,找到目标的计算机进行通信
传输层:端口协议
TCP网络控制传输 (Transmission Control Protocol)
端口:0~65535
1~1023系统占用的端口号 ? 1024~8000之内一般的是有软件占有
客户端与服务端第一次建立通信联系需要三次’握手‘
客户端向服务端发送一个连接请求,其中包含syn=1,seq=x,服务端收到客户端的消息,第一次握手完成
服务端收到客户端的消息后,回复ack=1+x,同时把自己的连接请求syn=1,seq=y一同作为反馈消息发送给客户端,客户端收到服务端的消息第二次握手完成。
客户端收到服务端发送回来的消息后,回复ack=1+y,再发送给服务端,服务端收到客户端发送回来的消息后,tcp连接正式建立完成
三次握手的原因,通讯双方都需要知道对方的收发能力是可靠的
tcp建立的连接不能一直连接
软件自定制协议,FTP,HTTP等 ? 你形成了一个数据:‘今天上课,别迟到’ ? 飞信自己定义的协议:加上size,MD5值等形成一个数据:date= {‘size‘:22,‘md5‘:‘hdkjakdjflk‘,‘content‘:‘今天上课,别迟到’}
端口协议,封装了端口,确定了软件在计算机的位置 ? tcp(端口号:9000) |date={‘size‘:22,‘md5‘:‘hdkjakdjflk‘,‘content‘:‘今天上课,别迟到’}
ip协议:获取目标计算机局域网位置 ? ip协议(源ip地址,目标ip地址) | tcp(端口号:9000) |date={‘size‘:22,‘md5‘:‘hdkjakdjflk‘,‘content‘:‘今天上课,别迟到’}
以太网协议:获取目标计算机的mac地址 ? 以太网协议(源mac地址,目标mac地址,数据类型)| ip协议(源ip地址,目标ip地址) | tcp(端口号:9000) |date={‘size‘:22,‘md5‘:‘hdkjakdjflk‘,‘content‘:‘今天上课,别迟到’}
转换成bite流发出去
1.虚拟分配ip地址(DHCP协议) ?
2.网关:连接外网,路由器分配这些ip都是内网ip ?
3.计算最优路径
原文:https://www.cnblogs.com/guzhaowen/p/11218508.html