TCP/IP基础知识

news2024/11/29 6:25:31

文章目录

  • 互联网与TCP/IP的关系
  • TCP/IP与OSI参考模型
    • 硬件(物理层)
    • 互联网层(网络层)
      • IP
      • ICMP
      • ARP
    • 传输层
      • TCP
      • UDP
    • 应用层
      • WWW
      • 电子邮件(E-Mail)
      • 文件传输(FTP)
      • 远程登录(TELNET与SSH)
      • 网络管理(SNMP)
  • TCP/IP通信实例
    • 数据包首部
    • 发送数据包流程
      • 应用程序处理
      • TCP模块的处理
      • IP模块的处理
      • 网络接口(以太网驱动)的处理
    • 经过数据链路的包
    • 数据包接收流程
      • 网络接口(以太网驱动)的处理
      • IP模块的处理
      • TCP模块的处理
      • 应用程序处理

互联网与TCP/IP的关系

互联网进行通信时,需要相应的网络协议,TCPIP原本就是为使用互联网而开发制定的协议族。因此,互联网的协议就是TCP/IP,TCP/IP就是互联网的协议。

TCP/IP与OSI参考模型

OSI参考模型与TCP/IP的关系
TCP/IP与OSI在分层模块上稍有区别。OSI参考模型注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发哪种程序

硬件(物理层)

负责数据传输的硬件,相当于以太网或电话线路等物理层的设备。只要在物理层所用的传输媒介不同,网络的带宽、可靠性、安全性、延迟等都会有所不同。
##网络接口层(数据链路层)
利用以太网中的数据链路层进行通信,因此属于接口层。可以把它当作让NIC起作用的”驱动程序“。

互联网层(网络层)

使用IP协议,基于IP地址转发分包数据。

IP

跨越网络传送数据包,使整个互联网都能收到数据。
非可靠性传输协议。

ICMP

用于IP数据包在发送途中一旦发生异常导致无法到达对端目标地址时,给发送端发送一个发生异常的通知。
它有时也被用来诊断网络的健康状况。

ARP

从分组数据包的IP地址中解析出物理地址(MAC地址)的一种协议。

传输层

能让应用程序之间实现通信,通过端口号识别不同的应用程序。

TCP

面向有连接的传输层协议。
能正确处理丢包、传输顺序乱掉等异常情况,能有效利用带宽,缓解网络拥堵。
建立与断开连接,有时需要至少7次的发包收包,导致网络流量的浪费。为了提高网络的利用率,定义了各种各样复杂的规范,因此不利于视频会议(音频、视频的数据量既定)等场合使用。

UDP

面向无连接的传输层协议。
常用于分组数据较少或多播、广播通信以及视频通信等多媒体领域。

应用层

OSI中的会话层、表示层和应用层

WWW

浏览器与服务端之间通信所用的协议是HTTP(HyperText Transfer Protocol)。
所传输数据的主要格式是HTML(HyperText Markup Language)。
WWW中的HTTP属于OSI应用层的协议,而HTML属于表示层的协议。

电子邮件(E-Mail)

发送电子邮件时用到的协议叫做SMTP (Simple Mail Tranfer Protocol)。
电子邮件的格式由MIME协议扩展,MIME属于OSI参考模型的第6层——表示层。

文件传输(FTP)

文件传输是指将保存在其他计算机硬盘上的文件转移到本地的硬盘上,或将本地硬盘的文件传送到其他机器硬盘上。
传输过程中可以选择用二进制方式还是文本方式(表示层)
在FTP中进行文件传输时会建立两个TCP连接,分别是发出传输请求时所要用到的控制连接与实际传输数据时所要用到的数据连接(这两种连接的控制管理属于会话层的功能。)。

远程登录(TELNET与SSH)

网络管理(SNMP)

使用SNMP管理的主机、网桥、路由器等称作SNMP代理(Agent),而进行管理的那一段叫做管理器(Manager)。
在SNMP的代理端,保存着网络接口的信息、通信数据量、异常数据量以及设备温度等信息。这些信息可以通过MIB (Management Information Base)(MIB也被称为是一种可透过网络的结构变量。)访问。
因此,在TCP/IP的网络管理中,SNMP属于应用协议,MIB属于表示层协议。

TCP/IP通信实例

数据包首部

数据包首部的层次化

发送数据包流程

已发送给邮件为例

应用程序处理

  • 首先进行编码处理,相当于表示层功能;
  • 编码结束后,何时建立通信连接何时发送数据的管理,属于会话层功能;
  • 应用在发送邮件的那一刻建立TCP连接,从而利用这个TCP连接发送数据。它的过程首先是将应用的数据发送给下一层的TCP,再做实际的转发处理。

TCP模块的处理

TCP根据应用的指示,负责建立连接、发送数据以及断开连接。
为了实现TCP的这一功能,需要在应用层数据的前端附加一个TCP首部。
TCP首部中包括:

  1. 源端口号和目标端口号(用以识别发送主机跟接收主机上的应用)、
  2. 序号(用以发送的包中哪部分是数据)以及
  3. 校验和(Check Sum,用来检验数据的读取是否正常进行的方法。)︰(用以判断数据是否被损坏)。
    随后将附加了TCP首部的包再发送给IP。

IP模块的处理

IP在TCP首部的前端在加上自己的IP首部。
IP首部中包含接收端IP地址以及发送端P地址。紧随IP首部的还有用来判断其后面数据是TCP还是UDP的信息。
IP包生成后,参考路由控制表决定接受此IP包的路由或主机。随后,IP包将被发送给连接这些路由器或主机网络接口的驱动程序,以实现真正发送数据。
如果尚不知道接收端的MAC地址,可以利用ARP (Address Resolution Protocol)查找。只要知道了对端的MAC地址,就可以将MAC地址和IP地址交给以太网的驱动程序,实现数据传输。

网络接口(以太网驱动)的处理

给IP包附加上以太网首部并进行发送处理。
以太网首部中包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据的协议。
根据上述信息产生的以太网数据包将通过物理层传输给接收端。
发送处理中的**FCS (Frame Check Sequence))**由硬件计算,添加到包的最后。设置FCS的目的是为了判断数据包是否由于噪声而被破坏。

经过数据链路的包

经过数据链路时的包,看这一张图就够了!
分层中包的结构
每个包首部中至少都会包含两个信息:一个是发送端和接收端地址,另一个是上一层的协议类型。详见上图

数据包接收流程

网络接口(以太网驱动)的处理

首先从以太网的包首部找到MAC地址判断是否为发给自己的包。如果不是发给自己的包则丢弃数据(很多NIC产品可以设置为即使不是发给自己的包也不丢弃数据。这可以用于监控网络流量。)。
如果是发给自己的包,就查找以太网包首部中的类型域从而确定以太网协议所传送过来的数据类型。
在这个例子中数据类型显然是IP包,因此再将数据传给处理IP的子程序,如果这时不是IP而是其他诸如ARP的协议,就把数据传给ARP处理。
如果以太网包首部的类型域包含了一个无法识别的协议类型,则丢弃数据。

IP模块的处理

如果判断得出包首部中的IP地址与自己的IP地址匹配,则可接收数据并从中查找上一层的协议。
如果上一层是TCP就将IP包首部之后的部分传给TCP处理;如果是UDP则将IP包首部后面的部分传给UDP处理。
对于有路由器的情况下,接收端地址往往不是自己的地址,此时,需要借助路由控制表,在调查应该送达的主机或路由器以后再转发数据。

TCP模块的处理

首先会计算一下校验和,判断数据是否被破坏。然后检查是否在按照序号接收数据。最后检查端口号,确定具体的应用程序。
数据接收完毕后,接收端则发送一个“确认回执”给发送端。如果这个回执信息未能达到发送端,那么发送端会认为接收端没有接收到数据而一直反复发送。
数据被完整地接收以后,会传给由端口号识别的应用程序。

应用程序处理

接收端应用程序会直接接收发送端发送的数据。通过解析数据可以获知邮件的收件人地址是乙的地址。如果主机B上没有乙的邮件信箱,那么主机B返回给发送端一个“无此收件地址”的报错信息。
如果可以接收的话,邮件会被保存到本机的硬盘上。如果保存也能正常进行,那么接收端会返回一个“处理正常”的回执给发送端。反之,一旦出现磁盘满、邮件未能成功保存等问题,就会发送一个“处理异常”的回执给发送端。
由此,用户乙就可以利用主机B上的邮件客户端,接收并阅读由主机A上的用户甲所发送过来的电子邮件——“早上好”。

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

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

相关文章

Redis Set 用了 2 种数据结构来存储,到现在才知道

Sets 无序集合,他的功能就好像你熟悉的 Java 中的 HashSet 一样。集合是通过散列表实现的,所以添加、删除、查找元素的时间复杂度是 O(1)。 1. 是什么 Sets 是 String 类型的无序集合,集合中的元素是唯一的,集合中不会出现重复的数…

【百问百答】可靠性基础知识第三期

1.电连接器的基本性能有哪些? 三个基本性能:机械性能、电气性能和耐环境性能。 电连接器机械性能测试包括:插拔力测试、端子保持力测试、端子正向力测试、耐久性测试。 电气特性测试包括:绝缘电阻测试、 耐电压测试、 低电平电阻测试(LLCR…

【YOLO v1】模型搭建 | model | 代码

YOLO V1 模型 import torch import torch.nn as nn from torchsummary import summarydef build_block(in_channel, out_channel, kernel_size, stride1, maxpoolFalse):padding kernel_size//2block nn.Sequential(nn.Conv2d(in_channel, out_channel, kernel_sizekernel_si…

数据包守恒 TCP 拥塞控制

数据包守恒是包括拥塞控制在内的合理利用带宽的方法之基石,它维持了有效网络传输的稳定,过去 40 年是,未来还是。数据包守恒可以描述为: 当带宽恰好满载时,receiver 收到 1 个数据包后 sender 才能发送 1 个数据包。当…

LeetCode链表OJ题目 代码+思路分享

目录 删除有序数组中的重复项合并两个有序数组移除链表元素 删除有序数组中的重复项 链接: link 题目描述: 题目思路: 本题使用两个指针dst和src一前一后 相同情况: 如果nums[dst]nums[src],那么src 不相同情况: 此…

基于B/S架构SpringBoot+Bootstrap框架的中小医院信息系统

一、开源项目简介 基于B/S架构,SpringBootBootstrap框架的中小医院信息系统。简单实现了挂号收费,门诊管理,划价收费,药房取药,体检管理,药房管理,系统维护等基础功能。 二、功能概述 本系统是…

计算机网络学习04(应用层常见协议总结)

1、HTTP:超文本传输协议 超文本传输协议(HTTP,HyperText Transfer Protocol) 是一种用于传输超文本和多媒体内容的协议,主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们网页就是通过 …

电脑硬盘检测怎么操作?如何检查硬盘的健康情况?

案例:如何对电脑硬盘进行检测? 【我的电脑硬盘中有许多重要的数据,我想知道电脑硬盘的健康状况怎么样?有没有小伙伴知道电脑硬盘检测的方法?】 电脑硬盘是存储数据的关键组件,而随着时间的推移和使用频率…

JAVA IO 模型详解

什么是IO I/O(Input/Outpu) 即输入/输出 。 从计算机结构的视角来看的话, I/O 描述了计算机系统与外部设备之间通信的过程。 从应用程序的视角来看的话,我们的应用程序对操作系统的内核发起 IO 调用(系统调…

RocketMq windows 安装

RocketMq安装步骤: 1、直接在官网下载。也可以从这里自取 https://rocketmq.apache.org/download/ 2、修改bin目录下的文件 runserver.cmd 和 runbroker.cmd文件。主要修改所占用内存的大小。 runserver.cmd 修改如下: runbroker.cmd 修改如下&#xff…

数据结构与算法(三):树论(树形结构、二叉树、二叉搜索树、红黑树、BtreeB+Tree、赫夫曼树、堆树)

树论(树形结构、二叉树、二叉搜索树、红黑树、Btree、BTree、赫夫曼树、堆树) 树形结构概念 在树形结构里面重要的术语: 结点:树里面的元素。 父子关系:结点之间相连的边 子树:当结点大于1时&#xff0…

牛客网CM11 链表分割

CM11 链表分割 描述示例解题思路以及代码解法1解法2 描述 现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。 示例 解题…

JDBC详解(四):操作BLOB类型字段(超详解)

JDBC详解(四):操作BLOB类型字段 前言一、MySQL BLOB类型二、向数据表中插入大数据类型三、修改数据表中的Blob类型字段四、从数据表中读取大数据类型 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴…

倾斜摄影超大场景的三维模型轻量化与三维展示效果的关系浅析

倾斜摄影超大场景的三维模型轻量化与三维展示效果的关系浅析 倾斜摄影超大场景的三维模型由于数据量庞大,直接进行渲染可能会导致计算资源和时间的浪费。因此,针对倾斜摄影超大场景的三维模型区域进行轻量化处理是一种有效的优化手段。但是,轻…

macOS 13.4Beta 3(22F5049e)With OpenCore 0.9.2开发版 and winPE双引导分区原版镜像

镜像特点 完全由黑果魏叔官方制作,针对各种机型进行默认配置,让黑苹果安装不再困难。系统镜像设置为双引导分区,全面去除clover引导分区(如有需要,可以自行直接替换opencore分区文件为clover引导文件)备注…

Python3语法笔记(后篇)

文章目录 前言函数输入参数返回值装饰器(decorator)Lambda表达式(匿名函数)文档和注解 类类和实例特殊方法继承枚举类 错误和异常后记 前言 这篇文章主要用于记录Python3相关语法,方便自己查阅使用。 Python3语法笔记…

rsync之include、exclude使用

rsync之include、exclude使用 注意:exclude可单独使用,include必须和exclude配合使用 环境: 服务端: 在做同步之前必须要知道的含义: --exclude* 排除所有文件,包括目录,因为在linux一切皆…

自动拣货仓库亮灯方案

方案目标概叙: 系统在美团平台下单后,骑手会收到取货码,凭借取货码到指定的智能仓库去取货,仓库标签系统调取相应订单信息,执行亮灯指令(屏幕显示订单信息及拣货数量,并亮灯)&#…

window server dos命令集合

1、 删除任务管理器服务里的服务项,用管理员运行cmd, 再运行:sc delete ServiceName ServiceName从服务属性里查。

爬虫为什么需要ip

爬虫需要使用爬虫ip主要是为了解决以下问题: 1、反爬虫机制:许多网站会设置反爬虫机制来防止爬虫程序的访问,例如限制IP地址的访问频率、检测访问来源等。使用爬虫ip可以绕过这些限制,使得爬虫程序更难被检测到。 2、访问限制&a…