【Socket网络编程】11.网络编程中的 数据封装 和 数据拆封
搭配这篇博文服用,效果更好:以太网数据包、IP数据包、UDP数据包:https://blog.csdn.net/u011754972/article/details/116030526
1.数据封装:是指将协议数据单元封装在一组协议头和协议尾中的过程。
由于用户传输的数据一般比较大,一次性发送出去十分困难,于是需要把数据分成多段,再按照一定的次序发送出去,这个过程就需要对数据进行封装
:
⑴ 1.应用层准备数据–>
⑵ 传输层接受应用层数据添加上TCP的控制信息(称为
TCP头部
),这个数据单元叫段(segment)
,将段
交给网络层–>⑶ 网络层接收到
段
,再添加上IP头部
,这个数据单元叫包(packet)
,将包
交给数据链路层–>⑷ 数据链路层将
包
再添加上MAC头部
和尾部
,这个数据单元叫帧(frame)
,交给物理层–>⑸ 物理层将收到的数据转化为
比特流
(就是二进制,0101),在网线中传送。
数据封装是从高层到底层,逐层封装。
2.数据拆封:是指将接收到的数据进行拆包,每一层只把对该层有意义的数据拿走。
⑴ 物理层接收到
比特流
,经处理后将数据交给数据链路层–>⑵ 数据链路层收到数据转化为
数据帧
,去掉MAC头尾部
(这个是解封
),将包
交给网络层–>⑶ 网络层收到
包
,去掉IP头
,将段交给传输层–>⑷ 传输层收到
段
,去掉TCP头部
,将数据交给应用层–>⑸ 应用层处理数据。
数据拆封是从低层到高层,逐层拆装。
可以看到底层有这么复杂,但是我们不需要管,Java的JDK都已经封装好了。
【Socket网络编程】11.网络编程中的 数据封装 和 数据拆封相关推荐
- Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片、相互转换
Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片.相互转换 目录 numpy中的array格式数据切片与pandas中的dataframe ...
- 揭秘2019双11背后的云网络 – 双11网络架构和洛神系统
图1 天猫双11成交额 2019年天猫双11成交额,2684亿!核心系统100%上云!全球最大流量洪峰,阿里云扛住了. 狂欢背后的技术栈 网上轻松购物体验实际上是背后复杂的技术组成的,这是一个简化 ...
- 【网络编程】网络基础知识
前言 小亭子正在努力的学习编程,接下来将开启javaEE的学习~~ 分享的文章都是学习的笔记和感悟,如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话,烦请点赞关注支持一波, 感激不尽~~ ...
- 网络协议 11 - Socket 编程(下):眼见为实耳听为虚
网络协议 11 - Socket 编程(下):眼见为实耳听为虚 原文:网络协议 11 - Socket 编程(下):眼见为实耳听为虚 系列文章传送门: 网络协议 1 - 概述 网络协议 2 - IP ...
- python中http协议编程_python网络编程、套接字、HTTP协议
网络编程 网络目的 : 数据的传输 网络数据传输是一个复杂的过程 OSI 七层模型 --> 网络通信标准化流程 应用层 : 提供用户服务,具体内容由特定程序规定 表示层 : 数据的压缩优化 会话 ...
- 网络架构,七层协议,三次握手四次挥手,socket套接字简单编程
一.单机架构 应用领域: 植物大战僵尸 office 二.CS架构 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和服务端. 客户端:用户安装的软 ...
- JAVA基础11 网络编程
JAVA基础 11.网络编程 1.什么是网络?网络模型?网络四要素? 1.网络 在计算机领域中网络是信息传输,接收,共享的虚拟平台,通过它把各个点,面,体的联系到一起,从而实现这些资源的共享. 资源的 ...
- 11.网络编程的学习总结
11.网络编程 1.什么是网络?网络模型?网络四要素? 网络: 在计算机领域中网络是信息传输,接收,共享的虚拟平台,通过它把各个点,面,体的联系到一起,从而实现这些资源的共享. 1.资源的共享 2.免 ...
- JavaSE - 11 网络编程
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.网络编程概述 1.1 什么是网络 1.2 网络编程的三要素 1.3 IP地址 1.4 端口号 1.5 协议 2.通信程序 ...
最新文章
- 服务器产品选型与性价比图解
- MySQL SELECT同时UPDATE同一张表
- MATLAB实战系列(十八)-遗传算法解决TSP(旅行商)问题-算法原理
- mysql日期序列填充_MySQL如何在范围内填充缺失的日期?
- 螺丝孔槽中的螺丝拧花了的物理原理分析
- 图像的色彩类别,灰度化,二值化
- oracle数据库读取工具,用Oracle导入导出工具实现Oracle数据库移植
- tensorboard运行
- 重装系统后删除Cygwin的安装文件
- 【英语】舞动奇迹--荡漾我心
- 【Android】Android SDK下载和更新失败的解决方法!!!
- 选择软件测试作为你的职业,一个无经验的大学毕业生,可以转行做软件测试吗?
- 数据爬取 mail_Python网络爬虫实战,数据解析!
- IS-IS快速收敛调优(一)——IS-IS收敛机制
- 获取百度网盘提取码的两种方法
- SolidWorks基础操作笔记
- Linux修改系统时间
- QFile 无法重命名文件名问题
- spring boot项目:用户中心的商品信息编辑功能
- Linux访问群晖NAS共享文件夹
热门文章
- 带你看android的内心世界
- Caffe部署中的几个train-test-solver-prototxt-deploy等说明二
- Google的深度学习强在哪?谷歌首席科学家说了这些奇妙特性
- 杨鹏谈世纪佳缘推荐算法:基于Spark GraphX,弃GBDT和LR用FM
- 深入理解分布式技术 - 分布式缓存实战_Hot Key 和Big Key的发现与治理
- MySQL - Join关联查询优化 --- NLJ及BNL 算法初探
- linux接收网络数据并存存储,linux网络数据包数据结构 Socket Buffer
- groovy定义变量获取当前时间_IDEA不愧为神器,结合Groovy脚本,简直无敌!
- 在哪里可以找到用于读取 YML 配置文件的 Spring 文档
- 八进制、十进制、十六进制及字符相互对应表