1.什么是网络编程?
基于网络编写代码,能够实现数据的远程交互
2.学习网络编程的目的
能够开发cs架构的软件
3.网络编程的起源
"""
最早起源于美国军事
想实现计算机之间数据的交互
"""
4.网络编程必备条件
数据的远程交互
1.早期的电话 电话线
2.早期的大屁股电脑 网线
3.笔记本电脑、移动电话 网卡
OSI七层协议简介
"""
OSI七层协议:规定了所有的计算机在远程数据交互的时候必须经过相同的处理流程、在制造过程中必须拥有相同的功能硬件
"""
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层
"""
常见的是整合之后的5层或者4四层
"""
应用层
传输层
网络层
数据链路层
物理连接层
"""
接收网络消息:数据由下网上传递
发送网络消息:数据由上网下传递
"""

OSI七层协议之物理连接层
主要用户确保计算机之间的物理连接介质,接收数据(bytes类型、二进制)
OSI七层协议之数据链路层
1.规定了电信号的分组方式
2.以太网协议
规定了计算机在出厂的时候都必须有一块网卡,网卡上有一串数字
该数据相当于是计算机的身份证号码,是独一无二的
该数字的特征:12位16进制数据
前6位厂商编号,后6位流水线号
该数字也称为:以太网地址/MAC地址
OSI七层协议之网络层
IP协议:规定了所有接入互联网的计算机都必须有一个IP地址,类似于身份证号
mac地址是物理地址可以看成永远无法修改
IP地址是动态分配的,不同的场所IP是不同的
IP地址特征:
IPV4:点分十进制(32位的二进制)
0.0.0.0
255.255.255.255
IPV6:128位的二进制(16进制标识)
2的128次方减1
能够给地球上每一粒沙分一个IP地址
IP地址可以跨局域网传输
ps:IP地址可以用来标识全世界独一无二的一台计算机
OSI七层协议之传输层
PORT协议(端口协议)
用来标识一台计算机上面的某一个应用程序
范围:0-65535
特征:动态分配
建议:
0-1024 系统默认需要使用
1024-8000 常见软件的端口号
8000之后的 可以使用
URT:统一资源定位符(网址):
网址本质是由IP和PORT组成的
IP+PORT:能够定位全世界独一无二的一台计算机上面的某一个应用程序
域名解析:将网址解析成IP+PORT
我们只所有不直接使用IP+PORT的原因是太难记,所以发明了域名
IP:PORT 实际使用冒号连接
114.55.205.139:80
传输层之TCP与UDP协议
TCP与UDP都是用来规定通信方式的
通信的时候可以随心所欲的聊,也可以遵循一下协议符合的聊
随心所欲的聊:文字、图片、视频
遵循一些协议:开头带尊称、首行空两格
ps:不遵循上述协议也可以通信,只不过遵循了更合规合法合理!
1.TCP协议(重要)
三次握手建立链接:
1.TCP协议也称为可靠协议(数据不容易丢失)
造成数据不容易丢失的原因不是因为有双向通道,而是因为有反馈机制
给对方发消息之后会保留一个副本,直到对方回应消息收到才会删除,否则会在一定的时间内反复发送
2.洪水攻击
同一时间有大量的客户端请求建立链接,会导致服务端一致处于SYN_RCVD状态
3.服务端五河区分客户端建立链接的请求
可以对请求做唯一表示
四次挥手断链接
1.4次不能合并为3次
因为中间需要确认消息是否发完(TIME_WAIT)

2.UDP协议
称之为数据报协议、不可靠协议
早期的QQ使用的是纯生的(没有加任何额外功能)UDP协议
现在的QQ自己添加了很多技术和功能
使用UDP的原因就是很简单,快捷,粗暴,只要指定对方的地址就可以发消息
"""
TCP我们可以看成是打电话:双方你侬我侬
UDP我们可以看成是发短信:只要发了就行 不管对方看不看
"""
应用层
应用层相当于是程序员自己写的应用程序 里面的协议非常的多
常见的有:HTTP、HTTPS、FTP
ps:后续框架部分再做介绍
网络相关专业名字
计算机之前想要实现数据交互必须要'连接'到一起
1.交换机
能够将所有接入交换机的计算机彼此互连起来
2.广播
首次查找接入同一个交换机的其他计算机,需要朝交换机里面吼一嗓子
3.单播
首先被查找的计算机回应查找它的计算机,并附带自己的MAC地址
4.广播风暴
接入同一台交换机的多态计算机同时发广播
5.局域网
可以简单的理解为由单个交换机组成的网络
在局域网内可以直接使用MAC地址通信
6.广域网
范围更大的局域网
7.互联网
由所有的局域网、广域网连接到一起形成的网络
8.路由器
不同局域网计算机之前是无法直接实现数据交互的,需要路由器连接
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)