网络编程
网络编程其实研究的就是程序之间的数据通信
OSI七层协议
所有的计算机都必须要有这七层
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层
开发层面可以归纳为五层
应用层
传输层
网络层
数据链路层
物理连接层
1.物理连接层
提供一个物理连接接口(网线口 无线网卡)
2.数据链路层
1.规定了电信号的分组方式
2.以太网协议
规定了计算机必须有一块网卡 并且网卡上面要有一个固定的一串数字
12位16进制数
前六位:产商编号
后六位:流水线号
上述的数字也称之为计算机的mac地址(类似于身份证号)
3.网络层
IP协议:规定了接入互联网的计算机都必须有一个IP地址用于唯一标识
IPV4版本
最小 0.0.0.0
最大 255.255.255.255
IPV6版本
能够表示出地球上每一粒沙子
IP地址能够唯一标识接入互联网的一台独一无二的计算机
arp协议
将IP地址转换成mac地址(基于网络请求)
4.
端口协议
范围:0~65535
特性:动态分配
端口号基本使用
0~1024系统默认需要使用的端口号
1024~8000常见软件端口号
以后我们开发的软件最后使用8000之后的端口号
# 端口号(port):能够唯一标识一台计算机上面正在运行的一款应用程序
端口号在同一台计算机同一时刻不能重复
4.1.
流式协议 可靠协议
三次握手 建立链接
重要状态
listen监听态:等待对方发请求
syn_rcvd态:忙于恢复确认建立请求
# 洪水攻击:服务端在同一时间接收到了大量的要求建立链接的请求
四次挥手 断开链接
不能合并成三次
tcp三次握手和四次挥手:
4.2.
不可靠协议
数据发送没有通道的概念 发送出去了就不管了
5.
应用层由来:
用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式