OSI七层协议
网络编程
网络编程其实研究的就是程序之间的数据通信;要想实现网络数据交互的前提是必须要有物理连接层,除了有物理连接层介质之外还应该有一些能够保证数据彼此无障碍交互的东西(标准)即OSI协议。
OSI协议
OSI七层协议即为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理连接层;有时候应用层、表示层、会话层也可以合成为应用层即五层协议。
物理连接层
提供一个物理连接接口(网线口、无线网卡)
一组物理层数据称之为:位
数据链路层
1、规定了电信号的分组方式
2、以太网协议
规定了计算机必须有一块网卡,并且网卡上面要有一个固定的一串数字;数字为12位16进制数,前六位是产商编号,后六位为流水线号;这些数字也称之为计算机的mac地址(类似于身份证号)
以太网协议的工作方式是广播
数据包含的:传输层发过来的整体的内容
3、一组数据称之为一个数据帧
4、数据帧分成两部分 =>头+数据
头包含:源地址与目标地址,该地址是mac地址
数据包含:包含的是网络层发过来的整体的内容
网络层
一组数据称之为一个数据包
划分广播域,每一个广播域但凡要接通外部,一定要有一个网关帮内部的计算机转发包到公网,网关与外界通信走的是路由协议。
数据帧分成两部分=》头+数据
头包含:源地址与目标地址,该地址是IP地址
1、IP协议:规定了接入互联网的计算机都必须有一个IP地址用于唯一标识。
2、分类
IPV4版本:
最小 0.0.0.0.
最大 255.255.255.255
IPV6版本:
能够表示地球上的每一粒沙子
IP地址能够唯一标识接入互联网的一台独一无二的计算机
3、公网IP与私网IP
公网IP需要花钱购买并申请
私网IP自带的但是无法直接基于互联网访问
4、ARP协议
将IP地址转换成mac地址(基于网络请求)
注:mac地址不能跨局域网传输
传输层
1、端口协议
范围: 0~65535
特征:动态分配
比如:第一次运行微信,系随机取一个端口号2022,然后关闭微信重新启动,系统会再随机取一个端口号
端口号基本使用
0~1024是系统默认需要使用的端口号
1024~8000是常见软件端口号
以后开发的软件最后使用的都是8000之后的端口
总结
端口号(port):能够唯一标识一台计算机上面正在运行的一款应用软件;端口号在同一台计算机上同一时刻是不能重复的;
ip+port 能够唯一标识世界上某一台接入互联网的计算机上面的某一个正在运行的应用程序
2、TCP协议
基于tcp协议通信之前:必须建立一个双向通信的链接
流式协议、可靠协议
发送数据必须等到对方确认后才算完成,才会将自己内存中的数据清理掉,否则重传
当服务端大量处于TIME_WAIT状态时意味着服务端正在经历高并发
三次握手:建立链接
重要状态
listen监听状态:等待对方发请求
syn_rcvd态: 忙于回复确认建立请求
四次挥手:断开链接
3、UDP协议
不可靠协议
数据发送没有通道的概念,发送出去就不管了
总结:TCP协议相当于打电话,你一句我一句;UDP协议相当于发短信,发完就完事。看不看不管
应用层
都是人为自定义的协议标准,可遵循可不遵循,如HTTP协议、FTP协议
自定义协议需要注意的问题:
1、两大组成部分=头部+数据部分
头部:放对数据的描述信息
比如:数据要发给谁,数据的类型,数据的长度
数据部分:想要发的数据
2、头部的长度必须固定
因为接收端要通过头部获取所接接收数据的详细信息
常见硬件
交换机:能够使接入该机器的所有计算机之间彼此互联
局域网:由交换机组成的互联网
互联网:可以简单的理解为是多个局域网之间彼此互联
路由器:能够连接多个局域网并实现局域网之间的数据传输