2022-12-17 TCP/IP 协议栈_2

news2024/11/18 2:47:29

TCP/IP 协议栈_2

  • 前言
  • 一、TCP/IP协议栈四层协议系统
  • 二、封装和分用
  • 总结


前言

既然要学习计算机网络编程, 就不得不提计网祖师爷 W· Richard Stevens, 天妒英才, 先生于1999年就早早陨落. 不知多少人凭着先生所著 “TCP/IP详解” 以及 “UNIX网络编程” 吃的盆满钵满. 而至今可说还未有能超越先生的著作.

但经典的问题是难读, 不是说书写的晦涩, 而是人们普遍对大部头有畏难情绪, 没有耐心读完. 没办法, 那就选择二手粮食吧.

当然, 我仍然鼓励有志者去读经典, 我们身边充斥的二手解读不是不能用, 而是不成体系, 失了精髓.


一、TCP/IP协议栈四层协议系统

之所以称 TCP/IP 协议栈, 是因为这里边不止是 TCP 协议和 IP 协议, 单这俩协议支撑不起网络. 它是一个四层的协议体系:

数据链路层: 底层网卡接口驱动, 属于硬件部分. 最终所有的逻辑都要转换称物理信号进行传递.

网络层: 实现数据包的选路和转发, 其主要任务是选择合适的路由器节点, 确定主机之间的通信路径. 网络层主要包括 IP 协议和 ICMP 协议.

传输层: 忽略中间传递过程, 负责两台通讯主机的端到端通信. 其实就是一层层封装, 使操作者不必关心传输的具体细节, 只关心传输接收到的信息. 传输层主要包括 TCP协议, UDP协议, SCTP协议(不做介绍).

应用层: 负责处理应用程序的逻辑. 这一层,才是我们最终用到的程序逻辑执行, 处理接收到的信息, 发出处理完成后需要对方应答的信息, 以及其它附加的逻辑.

你可以认为整个协议栈就是为完成一个网络 IO, 普通的 IO 是从自己的硬盘, 终端等输入, 再通过程序逻辑输出到终端, 或存储到硬盘, 而 TCP/IP协议栈就是扩展到整个互联网都是你的硬盘, 都是你的终端.

TCP/IP四层结构
应用层主要包括的是用户的程序, 所有利用传输层及以下层协议的程序都属于应用层.

如图所见, 传输层以下都属于内核空间, 意思是都是属于操作系统层的实现, 是操作系统固有的设施, 用户不得干预.

而应用层则是用户空间, 即用户可以自己把握的部分也就是如何处理这些传过来的数据.

而连接用户空间及内核空间的就是 socket 接口.

二、封装和分用

所谓封装, 就是将信息一层层包裹,

程序数据包裹到TCP/UDP,

TCP报文段/UDP数据报包裹到 IP,

IP数据报包裹至以太网帧,

然后通过物理途径发送出去. 所以, 以太网帧才是最终在物理网络中传送的字节序列.
封装

所谓分用则是以太网帧达到目的主机, 然后逐层剥离封装, 将应用程序数据传递给应用程序的过程.

分用
封装剥离的方法是根据封装层头部的类型 / 协议 / 端口号, 将剥离层的数据转发给相应的处理协议 / 程序进行处理.

当信息通过互联网传递, 通过封装和分用的作用, 让程序可以忽略层层处理, 直接使用数据.


总结

TCP/IP协议栈的内容是十分复杂的, 但并不难以理解.

我们将网络协议分为四层, 信息的传递是通过发送端四层协议的层层封装,成为可物理传递的以太网帧发送, 以及接收端通过四层协议的层层剥离, 将以太网帧还原为应用程序信息.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入浅出 - Rust 所有权与内存管理机制

一、从变量说起 fn main() {// 基本数据类型let a 5;let b a;// 指针let ptr_a &a;let ptr_b &b;println!("a value {}", a);println!("b value {}", b);println!("ptr_a value {:p}", ptr_a);println!("ptr_b value {:p}…

未来笔试重点(1)

一起成为更优秀的人 1.数组笔试重点考察 1.1整型数组与sizeof 1.2字符数组与sizeof 1.3sizeof与字符串 1.4strlen与字符串 2.指针笔试重点考察 2.1指针与sizeof 2.2指针与strlen sizeof与整型数组 int a[] { 1,2,3,4 };printf("%d\n", sizeof(a));printf(…

NMS与Soft NMS算法解析以及numpy实现

1. NMS算法 1.1 什么是NMS算法 NMS全称为Non Maximum Suppression,中文意思是非极大值抑制,字面意思就是不是极大值的元素被抑制掉,其实就是筛选出局部最大值得到最优解。NMS算法被广泛运用于目标检测算法处理网络输出的边界框。 1.2 为什…

浅谈Linux内核页面换入换出

【推荐阅读】 浅谈linux 内核网络 sk_buff 之克隆与复制 深入linux内核架构--进程&线程 了解Docker 依赖的linux内核技术 怎么在Windows下使用Makefile文件 浅析linux内核网络协议栈--linux bridge 0x00内存页面分类与换入换出规则 内存页面分为用户页面和内核页面。…

GDT践行(第一期):起床---运动--阅读

这里记录每周GDT践行记录.【2022】年第【51】周的第【6】天 封面图 第三部分:起床---运动--阅读 ❝ 小贴士: 在学校,出租房,宾馆,工位很多因素导致 学习区,运动区 卧室 都是同一个地方 环境导致你彻底彻底糊…

[附源码]Python计算机毕业设计Django课程在线测评系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

JVM部分知识点

目录 JVM主要组成部分及其作用? JAVA程序运行机制详情 JVM运行时的数据区 堆和栈的区别? Java垃圾回收机制 Java中有哪些引用类型? 如何判断对象是否可以被回收? JVM中的永久代会发生垃圾回收吗? JVM有哪些垃圾…

我国航空煤油行业发展趋势:燃油附加费复收 或将缓解企业经营压力

根据观研报告网发布的《中国航空煤油市场现状深度研究与投资前景分析报告(2022-2029年)》显示,航空煤油是石油产品之一,别名无臭煤油,主要由不同馏分的烃类化合物组成。航空煤油密度适宜,热值高&#xff0c…

【C语言】浮点型的存储方式

目录 一、浮点型和整型存储方式一样吗? 二、浮点型的存储规则 2.1 S,M,E求法 2.2 如何存放S,M,E 2.2.1 IEEE 754规定 2.2.2 特别的规定 2.2.3 验证 2.3 取出规则 2.3…

改造冰蝎马,实现免杀之default_aes php

本专栏是笔者的网络安全学习笔记,一面分享,同时作为笔记 文章目录 文章目录文章目录前文链接前言效果目标密码验证功能免杀后话前文链接 WAMP/DVWA/sqli-labs 搭建burpsuite工具抓包及Intruder暴力破解的使用目录扫描,请求重发,漏…

[附源码]Python计算机毕业设计黑格伯爵国际英语贵族学校官网Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

5G无线技术基础自学系列 | 单站点验证概述

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 单站点验证是指在基站硬件安装调试完成…

RNA-seq 详细教程:可视化(12)

学习内容 了解如何为可视化准备数据了解如果利用可视化来探索分析结果火山图可视化热图可视化可视化结果 当我们处理大量数据时,以图形方式显示该信息以获得更多信息,可能很有用。在本课中,我们将让您开始使用探索差异基因表达数据时常用的一…

【数电实验】移位寄存器与计数器

实验四 移位寄存器与计数器 一 实验目的 1 掌握任意进制计数器的构成方法; 2 熟悉双向移位寄存器的使用方法。 二 实验内容 1 任意进制计数器的构成方法: 用中规模集成计数器74HC161和与非门74LS00,构成十进制计数器。要求分别使用同步预…

精华推荐 | 【深入浅出RocketMQ原理及实战】「性能原理挖掘系列」透彻剖析贯穿RocketMQ的事务性消息的底层原理并在分析其实际开发场景

什么是事务消息 事务消息(Transactional Message)是指应用本地事务和发送消息操作可以被定义到全局事务中,要么同时成功,要么同时失败。RocketMQ的事务消息提供类似 X/Open XA 的分布事务功能,通过事务消息能达到分布式事务的最终一致。 事务消息所对应的场景 在一些对…

docker学习笔记(五)单个服务镜像部署

引言 当前微服务项目已经大面积普及,对于新需求迭代上线有许多疑惑的部分,比如线上的某些功能不能重启,在这种情况下我们需要部署和启动项目就不能搞大范围重启或干脆重新制作镜像,这种方式都是不可取的,这时候就需要…

重学webpack系列(二) -- webpack解决的问题与实现模块化的具体实践

只是根据几个想法,我们便创造出了webpack打包工具,它能够根据我们在前端项目中遇到的疑难杂症对症下药,那么这一章我们就一起来探讨一下我们项目落地所遇到的种种问题。 前端实践中的问题 Jsx / Tsx编译问题Less / Scss编译问题TypeScript编…

【Pintos】实现自定义 UserProg 系统调用 | 添加 syscall-nr 系统调用号 | 编写新的参数调用宏

💭 写在前面:本文讲解的内容不属于 Pintos 的 Project 项目,而是关于 userprog 如何添加系统调用的,学习如何额外实现一些功能到系统调用中以供用户使用。因为涉及到 src/example 下的Makefile 的修改、lib 目录下 syscall-nr 系统…

门诊排队叫号系统,有序叫号就诊,适用医院医院、门诊部、诊所等

排队叫号系统,是将互联网信息技术与门诊预约、签到、提醒、叫号、接诊等环节相结合,实现门诊流程式便捷叫号服务。 为助力门诊营造一个良好有序的就诊环境,打造科学合理的就诊流程,今天给大家推荐一款一款便捷排队叫号系统&#x…

Linux基本权限(2)

Linux基本权限(2) 📟作者主页:慢热的陕西人 🌴专栏链接:Linux 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要讲解了目录权限,和目录&#…