免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
搜索
本版
文章
帖子
ToB圈子
用户
登录
立即注册
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微头条
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
计算机网络(1)
返回列表
发新帖
计算机网络(1)
[复制链接]
发表于 2025-7-9 00:02:21
|
显示全部楼层
|
阅读模式
计算机网络(1)
基础篇
一、 TCP/IP 网络模型
配景(why?):
同一设备不同进程之间的通信方式有:管道、消息队列、共享内存、信号等方式。
不同设备呢?——需要网络进行网络通信
由于设备的多样性,以是我们需要通用的网络协议来规范。而为了网络协议之间分层解耦:每一层专注自己的职责,以是将网络协议分为了四层。由上至下:
应用层
传输层
网络层
网络接口层
应用层
最上层,用户直接感知到的层面。电脑或手机利用的app在应用层实现。当两个不同设备的应用通信时,就把数据传输到下一层:传输层。
应用层只用专注为用户提供服务,如https、dns、ftp、Telnet等。
应用层工作在操作系统的用户态,其他层都在内核态。
传输层
应用层传输层,传输的数据称为数据包。
重点关注两个传输协议:TCP(Transmission Control Protocol),UDP(User Datagram Protocol)。
对比项
TCP
UDP
连接方式
面向连接(建立连接,如三次握手)无连接(直接发送,不建立连接)
可靠性
可靠,保证数据顺序、无丢包、无重复(通过确认应答、重传机制)不可靠,不保证到达、顺序或不重复
传输方式
面向字节流面向报文
速率
较慢(因需建立连接、确认、重传、拥塞控制)较快(无需连接与确认,开销小)
数据边界
无边界,应用需定义消息长度有边界,每个UDP包独立传输
头部开销
20 字节8 字节
适用场景
需要可靠传输的场景,如:网页(HTTP/HTTPS)、文件传输(FTP)、电子邮件(SMTP)对及时性要求高,丢包可接受的场景,如:视频会议、及时游戏、VoIP
拥塞控制
有,避免网络拥塞无,由应用层自行处理
流量控制
有(滑动窗口机制)无
顺序保证
保证数据顺序不保证顺序
连接管理
三次握手建立连接,四次挥手断开连接无连接,发送即结束
注意:UDP也可以实现
安全
传输,将TCP特性在应用层实现。
问题:传输数据非常大=>传输不可控
解决方案:当数据包 > MSS(TCP最大报文长度)时,进行分块传输,当一个分块丢失或损坏,重新发送一个分块。
TCP协议中,每个分块称为一个TCP段(Segment)
问题:一台设备多个应用同时接受或传输数据,怎么定为?
解决:引入端标语。比方:80通常是web
服务器
用的;22是远程登录
服务器
用的
浏览器(客户端)中每个标签栏对应一个独立的进程,操作系统会为其分配临时的端标语。
传输层报文携带端标语,因此吸收方可以识别出报文发送给哪个应用。
网络层
不同进程之间实际的数据传输
功能
层。
网络层协议:IP(Internet Protocol)协议
IP报文由IP包头与数据(即传输层的报文)构成。
IP报文大小超过MTU(通常是1500字节)时会进行分片,类似传输层中的分块。
问题:怎么在网络中找到目的设备呢?——编号
解决:引入IP地址
IPv4 :32位,四段,每段8位,例:192.168.100.1
怎么寻址
?一个一个匹配?显然不科学
通过ip地址计算:网络号与主机号。网络号表示该ip地址的子网,主机号表示同一子网下的不同主机。怎么计算?联合子网掩码。
例子: 10.100.122.0/24 这里的/24表示的就是子网掩码:255.255.255.0(24个1)
网络号 = 10.100.122.2与255.255.255.0 按位与运算
主机号 = 10.100.122.2与255.255.255.0取反后再按位与计算
找到目的地就可以了吗?显然还不可,你还要选择到达目的地的路径
引出了IP协议的另一个
功能
,路由。
在实际的场景中,网络设备并不是之连接一条网线,而是通过网关、路由器、
交换机
等浩繁网络设备连接,因此会形成很多网络路径。当数据包到达一个网络节点时,就需要通过路径选择算法决定要走哪条路。
**小结:IP寻址是为了找到下一个目的地;路由则是根据目的地选择路径。
网络接口层
$$
IP报文到达 \Rightarrow 网络接口层添加MAC \Rightarrow MAC+IP报文经过封装 \Rightarrow 数据帧(Data frame)\Rightarrow 发送到网络
$$
这里的MAC是什么,有什么用?
以太网的概念:把局域网内的设备连接起来,利用MAC地址作为标识。定义了物理层和网络接口层的规范。
怎么连接的?以太网接口、wifi接口、路由器上的千兆、万兆以太网口、网线
而在以太网中匹配网络包目的地的方式与ip寻址不同,以是引入了MAC头部来匹配IP寻址。MAC包含了吸收方和发送方的MAC地址等信息,通过ARP协议获取MAC地址。
网络接口层为网络层提供“链路级别”传输服务,负责在以太网、wifi底层网络上发送原始包。
小结:IP:逻辑定位“寄信到哪个地址”;MAC:物理投递“把信投递到谁手里”,而这里以太网有点类似投递公司。
总结
分层模型使每一层只用专注自己的职责,不用关心其他的实现(实在就是java对象封装的思想),学习过程中主要关注前三层,末了网络接口层是硬件上的实现,了解即可。同时为了解决不同设备上通信问题,每一层都有自己的协议,按照协议来传输,就可以实现跨设备通信。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
回复
使用道具
举报
返回列表
浏览过的版块
SQL-Server
Oracle
DevOps与敏捷开发
伤心客
+ 我要发帖
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表