网络五层


1.架构 C/B B/S

客户端 <——————> 服务器
client <——————> server

浏览器 <——————> 服务器
browser <——————> server
学习socket编程就是要编写一个客户端软件和服务端软件
然后实现服务端与客户端基于网络通信

2.什么是网络
1.物理连接介质
2.互联网协议,相当于一套网络通用语言
互联网协议就是一套标准



OSI 5层
应用层(HTTP,FTP协议)


传输层(端口协议):cmd 查端口号命令 netstat -ano

--------------------------------
</TCP> </UDP> 基于端口工作的协议
TCP协议 可靠(流式)协议 :
Transmission Control Protocol 传输控制协议


特性:将数据量小并且时间间隔短的数据,一次性打包发送
可靠性:TCP传输数据,必须得到回复,才会删掉内存数据,否则间断发送
粘包问题的产生:
1.接收方:
不清楚接收数据总长度
2.发送方:
由于TCP协议的内部优化算法negle
会将数据量比较小的并且时间间隔比较短的数据一次性打包发送
--------------------------------
<三连:建立连接>
1.请求连接 C -->> S
2.回复请求 C <<-- S s回复连接
2.请求连接 C <<-- S s请求连接
3.连接建立 C -->> S
--------------------------------

syn : 同步
synchronizing :同步
syn chro ni zing


ack : 确认
Acknowledgement:确认
Ack now ledge ment
--------------------------------
c(syn = n) -->> s
c <<-- s(ack = n + 1)
c <<-- s(syn = k)
c(ack = k + 1) -->> s
--------------------------------
<四分:断开连接>
1.请求断开 C -->> S
2.回复请求 C <<-- S 2+3 CS双端都有查看剩余信息的操作
3.请求断开 C <<-- S 2+3 不能合并位
4.回复请求 C -->> S
--------------------------------
* ->给对方发消息,对方必须回复确认收到传输的数据才会被删除,
否则会在一定时间间隔之内反复发送直到对方接收或者超时


--------------------------------

</UDP> 数据报协议 :
User Datagram Protocol 用户数据包协议
1.不存在粘包产生
2.客户端以发空
3.udp可以实现并发效果
4.不可靠特性:服务端不存在,也不影响客户端朝服务端发送数据


socketserver 模块
能够实现并发效果
并发:看起来像同时运行就能称之为并发


Ex: QQ
无需建立双向连接,并且传输数据不可靠,可能会出现丢包的情况
通信速度比较快,但是发送的数据不会在内存中保留


端口(port):唯一标识一台计算机上某一个基于网络通信的应用程序
端口范围:0~65535 (动态分配)
注意:0~1024 通常是归操作系统分配的端口号
通常情况下,端口号写在8000之后
flask 框架 5000
django 框架 8000
mysql 数据库 3306
redis 数据库 6379
注意:一台计算机上同一时间一个端口号,只能被一个应用程序占用

IP 地址:唯一标识全世界接入互联网的独一无二的机器
port 端口号:唯一标识一台计算机上的某一个应用程序
ip + port:能够唯一标识全世界上独一无二的一台计算机上的某一个基于网络通信的应用程序
arp 协议:根据 ip 地址解析 mac 地址

网络层:
</ip协议> ip协议可跨局域网传输
1.规定计算机必须有一个ip地址
id地址特点:点分十进制
ipv4 / ipv6 兼容更多计算机
0.0.0.0
255.255.255.255
2.ip协议可跨局域网传输
3.ip地址能够标识互联网中独一无二的一台机器

数据链路层:
</以太网协议> 局域网
1.规定电信号的分组方式
2.只要是接入物联网的计算机,都必须有一块网卡
网卡有唯一编号-mac地址 长度48位2制,通常12位16制 (前6厂,后6流水线)

物理连接层:
二进制传输,电信号原理高低电平0101

以太网协议:
头18 字节
发送者/源地址,6个字节
接收者/目标地址,6个字节
数据类型,6个字节
原文地址:https://www.cnblogs.com/max404/p/10808305.html