| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 网络原理之TCP/IP协议 -> 正文阅读 |
|
[网络协议]网络原理之TCP/IP协议 |
什么是协议:两个主机之间的一系列约定就称之为协议。 协议中约定的细节,就表示传输的数据。 因为网络通信要规定的细节还是非常多的。要是把这些细节都放在一个协议里面,那么这个协议就会非常的复杂, 于是就把不同的细节由不同的协议规定 ,所以就有了很多协议,又根据协议的功能类型,把这些协议分成了“协议簇/协议栈” OSI七层模型(既复杂又不实用) 通常使用TCP/IP五层(四层没有物理层)模型
TCP/IP
通讯协议采用了
5
层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求
.
这5层的层级结构分别是,物理层,数据链路层,网络层,传输层,应用层。
下表表示各层该做的事及各层存在的协议。
数据包的封装和分用 1.不同的协议对数据包有不同的称谓 数据链路层把它称之为数据帧 ,网络层把它称之为数据报,传输层把它叫做数据段。 2.应用层数据通过协议栈发送到网络上时,每层协议都需要加上一个数据首部(header),这就称之为封装(这是发送方发生的事情)。 下面举一个例子来解释封装和分用。 QQ程序,接收用户输入的“hello” QQ程序就把“hello”包装成一个 应用程数据报 ?应用程序把这个应用层协议的数据报交给了传输层,传输层的TCP协议把这个应用层数据打包成一个TCP的数据包 ?传输层协议把这个数据报交给网络层(IP协议),IP协议把这个传输层数据打成一个网络层数据包 ?网络层再把这个数据交给数据链路层,数据链路层主要的“以太网”把网络层数据包,打包成一个数据链路层数据包 ?数据链路层把这个数据交给物理层,物理层把这一串数据转化成光/电信号进行传输。 每一层协议报头,都是二进制的数据。 接收方再把数据从下到上进行分用 物理层收到光/电信号的数据,把数据解析还原成二进制的bit流,再把这个二进制的数据交给数据链路层。 数据链路层就拿到了一个以太网数据帧 以太网协议,解析这个数据帧,去掉帧头和帧尾,把中间部分交给网络层,网络层就拿到了一个IP数据报? ?再解析IP数据报,把IP报头取出来去掉,然后把剩下的部分交给传输层。 传输层TCP协议拿到这个是数据之后在进行解析,去除TCP报头,把剩下的部分交给应用程序,QQ应用程序拿到这个数据之后,按照应用层的协议解析,得到msg为hell 协议的分层,意义就是为了降低模块之间的耦合,以降低人们的使用和学习成本,并且可以灵活的替换。 ?IP地址和mac地址都代表着一个主机 *UDP和TCP之间的特点的初步比较 1.UDP无连接,TCP有连接(UDP只需要直到对方的IP地址和端口号就直接进行传输不需要建立连接,而TCP需要,就像是打电话,需要对方接通才行) 2.UDP是不可靠,TCP是可靠传输(可靠说的不是能100%把数据发送到对方哪里,而是可以直到自己的数据是发送成功了还是失败了) 3.UDP协议面向数据报,TCP协议面向字节流。(UDP传输数据的基本单位是数据报,一个数据报相当于若干个字节,? TCP传输数据的基本单位是字节) 一.UDP报文的结构 ? 有时候数据的传输会发生后发先到的情况? 16位校验和就是为了检验数据是否正确,但是不能百分之白保证。 校验和的计算往往是和数据的内容相关的,而不只是个数。 UDP由于自身是不可靠传输所以在开发中使用的并不多,很多场景都是需要可靠性的。 UDP的有点: (1)传输速度快 (2)UDP支持“广播”(机房内部同一个局域网下的主机间的通信) 二.TCP 报文结构 保留位:是现在用不上 但是先占个位置 后面可能就用上了? ?这是TCP的六个标志位,每个标志位都是一个bit能表示0/1 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 0:41:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |