网络编程

网络原理

协议 网络中的关键(双方通信达成共识)

协议往上更近一步,就是:标准。

协议分层
网络编程

分层能够避免某个协议过于庞大复杂,
分层之后,协议之间不需要理解协议的具体细节
分层之后,任一层协议都可以灵活替换。

OSI七层协议

TCP/IP五层(四层)模型

应用层:应用程序直接打交道的协议
传输层:端到端之间的传输(只需要关注起点和终点)
网络层:负责点到点之间的传输(规划路径)
数据链路层:负责相邻点之间具体如何传输
物理层:网络通信的基础硬件设施(有时会忽略,就是四层模型)

网络编程
网络编程
现在的交换机和路由器没有本质区别。

网络传输基本流程:
1.封装(打包)
2.分用(拆快递)

假如我给朋友发一句消息:在吗?

封装:

1。应用层(QQ)需要根据用户输入数据,把这个数据构造成一个应用层数据报
构造数据报的过程,可以想成一个字符串拼接。
网络编程
2.应用层协议吧数据交给传输层进一步封装
封装意思就是给刚才的数据基础上加一个传输层协议抱头
网络编程
3.传输层吧数据交给网络层
网络层协议加上网络层协议报头
网络编程
4。网络层进一步交给数据链路层,
链路层协议再加上一个帧头,帧尾。
网络编程
5.数据链路层得到数据帧,交给物理层
物理层就会把数据转换为光电信号,通过硬件设备传输出去。

分用过程:
1.吧光电信号转换为为二进制bit流,得到数据链路层数据帧,吧他交给数据链路层处理。
2.数据链路层解析数据帧,剥离帧头帧尾,取出IP数据报,交给网络层。

网络编程
3.网络层在解析交给传输层
网络编程
4.传输层在解析交给应用层
网络编程
5.应用层解析内容,收件人就可以看到消息了。
网络编程
实际在网络中发送还是比较复杂的
网络编程

网络编程套接字(socket)

是一组API,实现网络编程

认识服务端,客户端
网络编程
区分唯一标准就是:
主动发起请求的一方,叫做客户端
被动接受请求的一方,叫服务器