今天学习了一下内容
网络编程
1.网络通讯协议
学习网络编程的目的?
什么是互联网
网:由多个节点相互组成
计算机互联网:由多台计算机通过某种介质相互组成互联网之所以存在就是为了能
让信息共享
网络编程:指的是编写基于网络的应用程序
学习网络编程的目的
开发出一款可以利用网路来传输数据的应用程序
cs结构
建立网络至少需要俩台计算机,然后使用网络来传输数据
1.网咯必须联通
2.在需要访问数据的一方 必须安装用于访问数据的应用程序
该应用程序称之为客户端应用程序
在需要提供数据的一方 必须安装用于共享的应用程序
该应用程序称之为客户端应用程序
学习网络编程 最终的目的就是要编写出一个和基于c/s结构的应用程序
要通讯必须具备的俩个条件
通讯协议
是由发送方和接受方共同商定的一套规范
为什么需要协议
其目的是为了双方能正确解析数据
列如 国内通讯:双方都是用普通话
国际通信: 使用英文
IBM DELL HP 早些年 每个公司都有自己的一套协议 这就导致了不同品牌的颠佬就连接不了网
于是 国际标准组织就提出了一套开放系统互联模型 OSI
物理层 通过物理介质建立物理连接 可以发送1010101 而精致数据
但是单纯的二进制 无法理解 必须明确一次性收几个,每一段二进制的含义是什么
数据链路层
以太网协议工作在数据链路层
1.数据如何分组(数据的分组)
每次发一个数据帧
每个数据帧包含 head和data
head18 data46-1500
head 包含 目的地址 原地址 802标签 以太类型 data
最大1518 超过将被分片对应关系
2.MAC地址 每一台计算机都要联网都要具备网卡 每个网卡 必然具备一个全球唯一的MAC地址
MAC可以 定位到任意一台计算机 但是 如果我提前不清除你的网卡 那就要进行广播
来确定网口和MAC地址的
每个局域网 第一个ip是网络地址 最后一个是ip是广播地址
如:192.168.13 0-255 所以可用范围是:1-254
路由器也是一种交换机
比如说有了链路层 理论上全世界的计算机就能连接到同一个网络上了
但是我们不可能将所有计算机及设备连接到同一个交换机上
但是没有交换机可以支持这么多计算机
也不能使用原始的广播方式
网络层
ip 协议工作在网络 :
Internet Protocol Address
ip协议规定 每个计算机设备要来联网 必须分配一个ip
地址:ip是一个逻辑地址 不是固定的 可能会变化
但物理逻辑存在相反的 逻辑 存在
ip地址的格式:由4段3位的十进制组成
ip地址在mac地址基础上加入网络地址的概念 有了网络地址之后 就可以缩小广播范围
所以在ip地址中 前三段是网络号 用于表示所在的局域网 后一段是主机号 用于表示主机在局域网中的所在位置
网络层
ip地址分为网络号 和主机号,通过网络号可以定位到某一个局域网,在通过主机号定位某一个计算机
但是这里有一个问题:一台计算机 不可能只运行一个需要联网的程序,那当网卡收到数据时
到底把数据给那个应用程序
传输层
TCP/UDP工作在这一层,传输层要求每一个应用程序绑定一个端口号
端口号是一个整数 取值范围 0-65536 但是0-1024是给系统保存的不建议使用
还有就是 端口号不能重复,至此 就可以通过ip+端口号定位全球某一台计算机上的某一个程序
TCP 传输控制协议
可靠传世协议 ,如何保障可靠,在发生数据我完之后,必须等待接受方返回回复信息,该数据才算发送成功
如果对方在一段时间内没有返回,会再次发送数据,超限制次数,将判定数据链接丢失
那什么叫链接
要发生数据必须先建立链接 ,简单来说就是找一条可以达到对方的路
如何选择一条最佳的传输路径,由路由器协议来控制,要保证数据传输可靠,一定要保证这传输路径是可用的
建立链接需要三次握手,,什么是三次握手
三次握手是为了确定传输可用,但是并不能保证后续传输可靠,所以TCP协议在传输数据时,没一个数据段
segment都需要确认信息
断开链接需要四次挥手
保证双方数据传输完毕,为什么需要多一次,有时候可能一段传输结束,另一边还没结束
我们来说说有什么优点和缺点:
优点:
保证传输可靠,数据完整
缺点:
因为需要传输确认信息,所以对网络消耗比较大,效率比较低
应用场景;
重要数据,在线支付,文字信息
UDP 协议用户数据协议
不可靠传输,UDP只管发送,不管对方是否收到
优点:传输效率比TCP高
缺点:传输不可靠
应用场景:对速度要求高,但是对完整性要求较低的
视频通话,语音 聊天,对战游戏,都是UDP