网络通讯协议
什么是互联网
网:由多个节点相互连接组成 eg:渔网、蜘蛛网
计算机互联网:由多台计算机通过某种介质相互连接而组成
互联网之所以存在就是为了能让信息共享
网络编程
网络编程:指的是编写基于网络的应用程序
学习网络编程的目的:开发出一款可以利用网络来传输数据的应用程序
最终目的是就是要编写一个基于C/S结构的应用程序
cs结构
建立网络至少需要两台计算机,然后使用网络来传输数据
1、网络必须联通
2、在访问数据的一方,必须安装用于访问数据的应用程序
该应用程序称之为客户端应用程序(client)
在需要提供数据的一方,必须安装用于共享数据的应用程序
该应用程序称之为服务端应用程序(server)
简写为C/S:
例如:qq 就是一个客户端 服务器在腾讯公司
还有一个B/S Browser浏览器/Server
该结构下传输的数据都是HTML文本数据
通讯必备的两个条件
1、物理传播介质(双绞线 光纤 无线电波)
2、通讯协议(掌握的重点)
通讯协议
是由发送方和接收方共同商定的一套规范
#1、制定协议的目的
为了通讯双方能够正确解析数据
例如 国内通讯:双方都用普通话
国际通讯:双方都用英语
#2、OSI七层模型的由来
早些年,一些生产电脑的厂商的设备都不兼容(无法通信),每个公司都有着自己的一套规范,
只能自己设备之间互相能够通信
于是国际标准组织就提供了一套开放系统互联模型 OSI 作为世界的互联网的统一标准
OSI七层模型
OSI七层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
经过人们长时间的磨合,发现可以把前三层统一归类为应用层
五层模型:应用层、传输层、网络层、数据链路层、物理层
物理层
通过物理介质建立物理连接,可以发送10101001 的二进制数据
但是单纯的二进制数据无法理解,必须明确一次性收几个,每一段二进制是什么含义
数据链路层
以太网(Ethernet)协议工作在数据链路层
#1、数据如何分组(数据的格式)
每次发送一个数据帧 每个数据帧包含 head和data
head:18byte data:46-1500byte
head | data |
head又包含目的地址、源地址
目标MAC | 源MAC | 其他 | data |
数据帧的最大长度为1518,如果数据长度超过将被分片
#2、MAC地址
每一台计算机想要联网就必须要具备网卡
每个网卡必然具备一个全球唯一的MAC地址
MAC地址可以定位到任意一台计算机,但是如果提前不清楚目标的MAC地址,
那就需要广播,来确定网口和MAC地址的对应关系
有了链路层 理论上全世界的计算机就能连到同一个网络了,但是我们不可能将所有计算机设备连接到同一个交换机上
#3、广播风暴
当很多同一网络中的计算机同时发送广播,就会形成广播风暴,交换机承受不住高负荷,导致网络瘫痪
网络层
ip协议工作在网络层 Internet Protocol Address
ip协议规定 每一个计算机设备要联网,必须分配一个ip地址
ip地址是一个逻辑地址 不是固定的,在家和在学校获得的ip地址就不一样
#1、ip地址的格式
由4段3位的十进制组成(点分十进制)
0.0.0.0 - 255.255.255.255
每个局域网第一个ip是网络地址(主机位是0) 最后一个ip是广播地址(主机位是255)
#2、网络位与主机位
ip地址分为两个部分,网络位与主机位
网络位:主要用来表示所处的局域网地址
主机位:主要用来表示你这台电脑的具体位置
区分网络位与主机位主要通过子网掩码
子网掩码:和ip地址的形式一样,子网掩码位1对应的就是网络位,0对应的就是主机位
#3、ARP地址解析协议(了解)
会根据你发的目标ip地址去找到对应目标的MAC地址,从而确保你的数据封包到数据链路层可以正常进行
总结:
ip地址分为网络号和主机号,通过网络号可以定位到某一个局域网,再通过主机号定位到某一个计算机
这样一来就可以通过ip定位到全球任意一台计算机
源MAC | 目标MAC | 源IP | 目标IP | data |
数据包
以太头部 ip头部
传输层
TCP/UDP工作在这一层
传输层要求每一个应用程序捆绑一个端口号
端口号是一个整数 取值范围 0-65535 0-1023端口是系统保留的,不建议使用,其他都可以用
至此 可以通过ip+端口号定位全球某一台计算机上的某一个应用程序
TCP协议(传输控制协议)
可靠传输协议:就是在发送完数据之后,必须等待接收方返回回复消息,该数据才算发送成功
如果对方在一段时间内没有返回,就会再次发送数据,超限制次数,就判定连接丢失(超时)
基于链接的传输:
要发送数据必须先建立链接,简单来说就是找一条可以到达对方的路,
如何选择最佳路径由路由协议来控制
#1、建立连接需要三次握手:
由于TCP要实现双向通信,为了防止单向通信的情况,A必须要确认B和自己同步,B也要确认A和自己同步
三次握手成功之后就表示链接建立成功了,只能表示这三次数据传输是可靠的,并不能保障后续的传输数据的可靠
TCP协议要求在发送数据后,必须接收到对方的回复信息才能确认数据成功发送,如果一段时间内没有收到
回复信息,会自动重新发送,如果重试的次数多,则表示链接可能已经中断了
#2、断开链接需要四次挥手:
1、客户端先发送断开链接请求
2、服务端确认请求,这样客户端到服务端的链接就中断了
3、当服务器发完最后的数据后,就向客户端发送断开链接请求
4、客户端确认断开信息,这样双向链接就全部断开了
四次挥手的目的主要是保证双方的数据传输已经全部完成,同样是为了保障数据的完整性
#3、优点:
保证传输可靠,数据完整
#4、缺点:
因为需要传输确认信息,所以对网络消耗较大,效率相对较低
#5、应用场景:
重要的数据,在线支付
UDP协议(用户数据报协议)
不可靠传输,UDP只管发送,不管对方是否收到
优点:
传输效率比TCP高
缺点:
传输不可靠
应用场景:
对速度要求高,对完整性要求低的,例如对战游戏、视频通话
应用层