当前位置: 首页 > 编程日记 > 正文

一分钟了解 TCP/IP 模型

图片描述

原文讲的不是特别细,为了便于理解,我颠倒了顺序。

写在开始

我们需要知道协议到底是什么。

在网络上,一个协议对应于管理系统之间如何相互通信的规则。

然后我们需要知道什么是协议族。

一个协议族是一系列协同工作的协议的集合。

图片描述

什么是 TCP/IP 模型?

TCP/IP(传输控制协议/互联网协议)由 DARPA 在 20 世纪 70 年代提出。这个模型来自于 ARPANET,它同样也是个知名的“互联网模型”。TCP/IP 模型有四个抽象的层次,描述了总体的设计大纲,并实现了网络通信的具体协议。我们将会简短地讨论每个层次最为流行的协议。

1. 网络访问层(数据连接 + 物理层)

网络访问层包括主机连接到物理网络所需要的硬件以及传送数据的协议。目标可以是网络上的其他主机,自己,或者远端的路由。互联网层具有整个互联网络的视图,而网络访问层仅限于像路由之类的第三层设备定义的物理层边界。

这个层次的协议取决于所使用的物理网络。如果物理网络是 LAN,那么通常使用的是以太网(802.3)协议以及它的变体,如果使用的是 WAN,常用的则是点对点协议(PPP)以及帧中继等协议。

比较出名的是以太网协议。两台电脑(主机)之间是通过网卡来进行发送和接收数据的。每个网卡都有一个独特的地址,也就是 MAC 地址。以太网数据以帧为单位,包括标头和数据部分。以太网在子网内以广播的形式发送数据。光有 MAC 地址并不能让两台主机之间相互通信,如果两台主机不在同一个子网,以太网协议就没辙了。这就要通过网络层来区分每台主机所在的网络是哪个子网。如果在同一个子网,就用广播发送数据,否则就用路由发送。这就导致了网络层的诞生。

2. 网络层(互联网层)

网络层的主要任务是区分主机是不是在同一个子网。网络层将上一层(传输层)接收到的数据分发到目标主机(在同一个网络或者外部网络)。这层确保片段通过网络移动到目标网络。于是引入了所谓的网络地址,即网址。规定网络地址的协议就叫 IP 协议。所以网络地址也称 IP 地址。IP 协议的数据包放在以太网数据包的数据部分,也分为标头和数据两部分。有了 IP 协议,就可以在两个主机之间发送数据了,接下来的问题在于每台主机都有不同的应用,如何区分哪个数据包属于哪个程序?这就是传输层的由来。

3. 传输层

传输层的主要任务是为应用层提供会话以及数据报通信服务。它接收应用层的数据,然后把它们分成更小的单元(标头和数据部分在网络层的数据部分),传输到网络层。

这层的任务是确保分割的单元在另一端正确地到达,它关心数据端到端的传输以及建立主机之间的逻辑连接,即所谓建立端口到端口的连接。网络层建立主机到主机的连接,只要有主机和端口,就能确定数据包属于哪个程序的。Unix 系统把主机 + 端口称之为套接字(Socket)。

这一层主要有两个协议:TCP 和 UDP。

4. 应用层

这个层次让应用能够访问其他层次的服务,并且定义了让应用交换数据的协议。这一层添加了自己的标头并向下发送到传输层。这一层的主要任务是将接收到的数据包按照协议解读成各种类型的数据,并将要发送的数据打包进传输层。现在数据包的格式看起来是这样的(以 HTTP 为例):

|------| |------| |------| |------| |-------------------|
以太网标头 IP标头 TCP标头 HTTP标头 数据部分
这一层主要的协议有:HTTP、FTP、SMTP、Telnet、NFS、RIP 等等。

相关文章:

网站流量UV是什么意思?什么是流量UV/PV/IP

雅虎统计基础数据定义PV(访问量): 即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。 UV(独立访客): 即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。IP(独立IP)&#xf…

摇橹船以“硬科技+人工智能”助推高质量发展

12月13日和14日,2021雷克大会暨智能经济年会在线上成功举办,大会得到了专业观众和行业媒体的广泛关注,全网累计数万人次在线观看直播。 本届大会聚焦产业智能化、智能基础设施、智能产业化和机器人产业发展助力智能经济等议题。专家学者和企…

一句话的设计模式(转)

如题,实际上,我想这是很困难的。 除非——只是为了给自己做一个提醒,能够看一眼就快速回想起该设计模式的种种记忆。 下列是我之前在学习《大话设计模式》时做的笔记总结,当中有部分措辞来自其作者程杰。(非常感谢他为…

高性能ORM框架XLinq功能详细介绍

之前简单介绍了XLinq的一些功能,有很多功能都没有提到,现在给XLinq加了一些功能,这次把所有功能都介绍一遍。 设计目标 易用性 在使用一个框架的时候 应该没几个人会喜欢写一大堆的配置文件吧 也应该没几个人会喜欢为了完成一个小功能却需要写…

太好玩了,爬虫、部署API、加小程序,一条龙玩转知乎热榜!

作者 | 周萝卜来源 | 萝卜大杂烩一直想做一个从爬虫到数据处理,到API部署,再到小程序展示的一条龙项目,最近抽了些时间,实现了一个关于知乎热榜的,今天就来分享一下!数据爬取首先我们看下需要爬取的知乎热榜…

linux的more 命令

名称:more 使用权限:所有使用者 使用方式:more [-dlfpcsu] [-num] [/pattern] [linenum] [fileNames..] 说明:类似 cat ,不过会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键&#xff08…

20155222卢梓杰 实验三 免杀原理与实践

实验三 免杀原理与实践 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧 实验步骤如下 1.先对实验二中生成的exe进行检测 65款杀毒软件有36款认为不安全 39款杀毒软件有6款认为不安…

Linux wc命令详解

通常利用Linux的wc命令和其他命令结合来计算行和其他信息。在Linux下用wc进行计数。返回文件的行数、字数、字节数等。看个例子:wc wc1.txt3 5 16 wc1.txt输出信息依次是:行数 字数 字节数 文件名称。再具体点,单个统计。#wc -m filename&…

(剑指Offer)面试题54:表示数值的字符串

题目: 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14"…

「动手学深度学习」在B站火到没谁,加这个免费实操平台,妥妥天花板!

论 AI 圈活菩萨,非李沐老师莫属。前有编写「动手学深度学习」,成就圈内入门经典,后又在B站免费讲斯坦福 AI 课,一则艰深硬核讲论文的视频播放量36万,不少课题组从导师到见习本科生都在追番。如此给劲的分享&#xff0c…

spring-redis-data的一个坑

事故原因: 运维报告redis内存直线上升,然后查询发现都是setrange操作,review代码,没法发现setrange操作 代码如下: redisTemplate.opsForValue().set(groupidxxxResult.getSeriesNo(), JSON.toJSONString(xxxRquestDTO…

Linux如何搜索文件的方法

#whereis 查找已经安装的软件 在Linux上查找某个文件是一件比较麻烦的事情。毕竟在Linux中需要我们使用专用的“查找”命令来寻找在硬盘上的文件。 Linux下的文件表达格式非常复杂,不象WINDOWS,DOS下都是统一的AAAAAAA.BBB格式 那么方便查找,在WINDOWS中…

python socket编程

python 编写server的步骤:1.第一步是创建socket对象。调用socket构造函数。如:socket socket.socket( family, type )family参数代表地址家族,可为AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的…

AI 语言模型真的是越大越好吗?这个模型优于 Gopher

编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 近年来对于 AI 语言模型的有一个争议就是 —— 越大越好。 DeepMind 正在质疑这个理由,并表示给 AI 一个记忆可以帮助与它 25倍大小的模型竞争。 去年 6 月,OpenAI 发布 GPT-3 模…

[20180412]订阅+镜像切换

订阅镜像切换 主数据库挂了之后&#xff0c;镜像数据库没挂&#xff0c;那么就需要把镜像数据库设置成主数据库。1.修改主机名&#xff0c;改成和主数据库一样的&#xff0c;重启2.修改数据库中的主机名IF SERVERPROPERTY(ServerName)<>SERVERNAMEBEGINDECLARE srvname s…

【Cocos2d开发】Cocos2d下安卓环境的搭建

在进行Cocos2d游戏开发前 我们先来配置一下环境&#xff0c;我们先来准备一下工具&#xff0c;我们所需要的工具分别为&#xff1a;1.Cocos2d引擎2.JDK3.SDK4.NDK5.ANT6.ADT1.下载Cocos2d-x引擎&#xff0c;目前最新版本为3.6&#xff0c;本教程的所有例子以3.4版本为例&#x…

Linux时间转化方法

Linux时间转化方法&#xff1a;(1)date -d"2008年 12月 17日 星期三 17:27:22 CST" "%s"该命令将2008年 12月 17日 星期三 17:27:22 CST转化为时间戳结果:1229515680(2)将时间戳1123495443 换算成可以识别的年月日分秒date -d 1970-01-01 UTC 1123495443 s…

有的放矢,远程操控中实时音视频的优化之道

5G远程操控场景&#xff0c;对实时音视频传输的时延、卡顿率和抗弱网等指标都有着非常高的要求&#xff0c;本文将会介绍如何结合5G网络特点&#xff0c;在实时音视频通信链路中进行联合优化&#xff0c;满足行业场景远控需求&#xff0c;降低画面时延。 在上一篇文章中&#x…

Quartz动态添加、修改和删除定时任务

2019独角兽企业重金招聘Python工程师标准>>> Quartz动态添加、修改和删除定时任务 转载于:https://my.oschina.net/haokevin/blog/1795161

Linux下运行run文件

必须到Linux下的终端&#xff0c;不能用远程命令 #chmod 755 文件名 #./文件名

第五届中国企业服务年会:洞见2022数智化的“光与火”

汇智聚能&#xff0c;一起点亮“高增长的下一步”。 在疫情防控与复工复产双重因素的带动下&#xff0c;企业数智化成为不确定环境中的确定项&#xff0c;“ABCD&#xff08;人工智能、区块链、云计算、数据&#xff09;X”引爆生产力、生产资料、生产关系和基础设施革命&#…

QTP连接oracle

2019独角兽企业重金招聘Python工程师标准>>> 首先&#xff0c;因为群里很多朋友说QTP连接oracle有点麻烦&#xff0c;我针对于连接oracle做一个完整的教程&#xff0c;希望需要学习的朋友都可以来看一下&#xff1b;具体方法如下&#xff1a; 1、无论是什么语言&am…

java子类对象和成员变量的隐写方法重写

1、子类继承的方法只能操作子类继承和隐藏的成员变量名字类新定义的方法可以操作子类继承和子类新生命的成员变量&#xff0c;但是无法操作子类隐藏的成员变量&#xff08;需要适用super关键字操作子类隐藏的成员变量。&#xff09; public class ChengYuanBianLing { publi…

Linux的cron和crontab定时任务

定时任务调用shell本地Windows写一个shell test.sh #!/bin/bashecho "Course Arrange Job runs well at: " date "%Y-%m-%d %H:%M:%S" >> /usr/www/wwwshell/www.txt 先在服务器执行看可不可以 注意需要 # dos2unix ./test.sh 再 # ./test.sh需要…

用AI创造可持续发展社会价值,第二届腾讯Light·公益创新挑战赛正式启动

12月23日&#xff0c;“创变者”2021年度腾讯Light论坛在厦门正式举办。在论坛上&#xff0c;由全国妇联宣传部指导&#xff0c;腾讯公司联合中国儿童中心主办&#xff0c;企鹅伴成长、腾讯华东总部、腾讯SSV创新办学实验室、企鹅爱地球、腾讯优图实验室、腾讯云AI、腾讯云微搭…

CSS3 @keyframes animate

2019独角兽企业重金招聘Python工程师标准>>> 1.keyframes定义和用法 通过 keyframes 规则&#xff0c;您能够创建动画。 创建动画的原理是&#xff0c;将一套 CSS 样式逐渐变化为另一套样式。 在动画过程中&#xff0c;您能够多次改变这套 CSS 样式。 以百分比来…

linux系统命令学习系列-文件和目录管理

复习上节内容&#xff1a;1. 定时执行任务命令crontab –e, crontab –l,crontab –r2. 作业&#xff1a;定义一个定时任务&#xff0c;每分钟向/tmp/test.txt文件输出hello worldcrontab –e*/1 * * * * echo ‘hello world’>>/tmp/test.txt本节我们来说一下文件和目录…

GPT-3再进化:通过浏览网页来提高事实准确率

作者 | OpenAI来源 | 数据实战派为了让 GPT-3 模型可以更准确地对开放式问题进行回答&#xff0c;研究人员使用了基于文本的网络浏览器对 GPT-3 进行微调。微调后的 WebGPT 模型可以对人类实时回答问题的方法进行学习&#xff0c;比如提交搜索、跟踪链接并上下滚动网页。研究人…

lamp-安装脚本-修订版2

#!/bin/bash #write by zhang_pc #at 2015.08.07 #apache2.4 php.5.4 mysql5.5 #脚本说明&#xff0c;如果脚本所在目录有源码包就用本地的&#xff0c;否则就从互联网下载APR_FILESapr-1.5.2.tar.gz APR_DIRapr-1.5.2 ARP_PRE/usr/local/apr APR_URLhttp://mirror.bit.edu.cn/…

Linux的rc.local自启动服务

linux有自己一套完整的启动体系&#xff0c;抓住了linux启动的脉络&#xff0c;linux的启动过程将不再神秘。本文中假设inittab中设置的init tree为&#xff1a;/etc/rc.d/rc0.d/etc/rc.d/rc1.d/etc/rc.d/rc2.d/etc/rc.d/rc3.d/etc/rc.d/rc4.d/etc/rc.d/rc5.d/etc/rc.d/rc6.d/e…