传输层协议——TCP协议

news2024/12/25 18:43:42

传输层协议——TCP协议

  • 认识IP地址
  • TCP/IP的分层管理
  • TCP/IP分层通信示例(发送数据包)

认识IP地址

IP地址属于网络层地址

在计算机通信中,为了识别通信对端,必须有一个类似于地址的识别码进行标识。IP地址用于在连接到网络中的所有主机中识别出进行通信的目标地址。

IP地址(IPv4)由32位正整数来表示。TCP/IP通信要求将这样的IP地址分配给每一个参与通信的主机。IP地址在计算机内部以二进制方式被处理。一般表示为点分十进制。
例:
点分十进制: 172.20.1.1

二进制表示法:10101100 00010100 00000001 00000001

IP属于面向无连接型

  • IP面向无连接。 即在发包之前不需要建立与对端目标地址之间的连接。上层如果遇到需要发送给IP的数据,该数据会立即被处理成IP包发送出去。
  • 在面向有连接的情况。 需要事先建立连接,如果对端主机不存在,也就不可能建立连接。
  • 在面向无连接的情况。 不管你对端的主机是否存在或者关机,数据包还是会被发送出去。
  • IP采用无连接的原因: 一是为了简化,二是为了提速。

TCP/IP的分层管理

TCP分层协议族按层次分别分为应用层、传输层、网络层、数据链路层、物理层 当然也有按不同的模型分层的。

TCP分层的原因:

  • 独立性高。 每一层只负责完成自己的任务即可
  • 管理性好。 当我们发现那一层不需要时甚至可以将其删除,不会影响其功能。

1.应用层:
满足我们日常需求的网路程序都在应用层

2.传输层:
负责数据能够从发送端传输到接收端

3.网络层:
在复杂的网络环境中确定一个路径
4.数据链路层:
两个设备(同一种数据链路节点)之间进行传递数据
5.物理层:
负责比特流在节点之间的传输,即负责物理传输

TCP/IP分层通信示例(发送数据包)

数据包首部:
在这里插入图片描述
发送数据包:
假设甲给乙发送电子邮件,内容为:“早上好”。而从TCP/IP通信来看,是从一台计算机A向另一台计算机B发送电子邮件。我们从上述例子来讲解一下TCP/IP通信过程。

  1. 应用程处理

启动应用程序,将收件人邮箱填好,再由键盘输入邮件内容“早上好”,鼠标点击“发送”按钮就可以开始TCP/IP的通信了。

应用在发送邮件时的那一刻建立TCP连接,而从利用这个TCP连接发送数据。它的过程 首先是将应用的数据发给下一层TCP,在做实际的转发处理。

  1. 传输层TCP的处理

TCP根据应用的指示,负责建立连接、发送数据以及断开连接。TCP提供将应用层发来的数据顺利发送至对端的可靠传输。

为了实现TCP这一功能,需要在应用层数据的前端附加一个TCP首部。TCP首部中包括源端口和目标端口号(用以识别发送主机跟接收主机上的应用)、序号(用以发送的包中那部分是数据)以及校验和(用以判断数据是否被损坏)。随后附加TCP首部的包再以发送给IP。

  1. 网络层IP处理模块

IP将TCP传来的TCP首部和TCP数据合起来当做自己的数据,并在TCP首部的前端在加上自己的IP首部。因此,IP数据包中IP首部后面紧跟着TCP首部,然后才是应用首部和数据本身。IP首部包含接收端IP地址以及发送端IP地址。紧随IP首部的还有用来判断其后面数据是TCP还是UDP的信息。

IP包生成后,参考路由控制表决定接收此IP包的路由或者主机。随后,IP包将被发送给连接这些路由器或主机网络接口的驱动程序,以实现真正发送数据。

如果尚不知道接收端的MAC地址,可以利用ARP(Address Resolution Protocol)查找。只要知道对端的MAC地址,就可以将MAC地址和IP地址交给以太网驱动程序,实现数据传输。

  1. 数据链路层的处理

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

  1. 物理层处理

物理主要负责将数据通过以太网电缆进行传输。

注意:
逆过程则是拆包的过程。

<参考文献>
《图解TCP/IP》

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

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

相关文章

利用seaborn、statannotations库绘制显著性标注

如何使用Python-SeabornSeaborn进行显著性统计图表绘制&#xff0c;详细内容如下&#xff1a; Python-Seaborn自定义函数绘制Python-statannotations库添加显著性标注 1、Python-Seaborn 自定义函数绘制 import matplotlib.pylab as plt import numpy as np import seaborn as…

Spring Cloud组件源码之LoadBalancer源码分析

" Spring 到底是春天的来临万物复苏&#xff0c;还是春转夏的干燥又炎热呢&#xff1f;" Spring的来临让JavaEE走向了另一个高度。便捷的开发&#xff0c;完美的生态。物极必反&#xff0c;学习Spring的成本越来越低&#xff0c;导致Java程序员越来越密集&#xff0…

1、Windows下编译并搭建AzerothCore服务端

目录前言一、AzerothCore下载二、mysql安装三、boost安装四、OpenSSL安装五、CMake下载六、CMake编译1 - CMake生成vs项目2 - vs项目设置3 - 生成解决方案4 - 安装AzerothCore5 - 添加账号6 - 修改服务器名称7 - 修改客户端的服务器地址前言 客户端对应版本&#xff1a;魔兽世…

CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms

文章目录一、前言二、实验目的三、对象字典OD四、TPDO1数据变化发送&#xff0c;滤波时间200ms4.1、main.c4.2、让CANopen从站进入操作状态4.3、TPDO1的CAN数据包一、前言 该笔记的程序&#xff1a;github 二、实验目的 CANopen从站有一个变量tx_Value&#xff0c;映射到T…

我调用第三方接口遇到的13大坑

前言 在实际工作中&#xff0c;我们经常需要在项目中调用第三方API接口&#xff0c;获取数据&#xff0c;或者上报数据&#xff0c;进行数据交换和通信。 那么&#xff0c;调用第三方API接口会遇到哪些问题&#xff1f;如何解决这些问题呢&#xff1f; 这篇文章就跟大家一起…

ubuntu防火墙命令介绍

ubuntu在开启ufw防火墙前&#xff0c;为了避免与iptables现有规则冲突&#xff0c;建议先清空iptables的所有规则。相关命令如下&#xff1a; iptables -F 更改iptables规则链默认操作命令如下&#xff1a; iptables -P INPUT ACCEPTiptables -P FORWARD ACCEPTiptables -P …

【PyTorch】第一节:张量(Tensor)的定义

作者&#x1f575;️‍♂️&#xff1a;让机器理解语言か 专栏&#x1f387;&#xff1a;PyTorch 描述&#x1f3a8;&#xff1a;PyTorch 是一个基于 Torch 的 Python 开源机器学习库。 寄语&#x1f493;&#xff1a;&#x1f43e;没有白走的路&#xff0c;每一步都算数&#…

云原生网络之微隔离

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/130044619 一、微隔离介绍 1.1、微隔离概念 在主体执行动作时&#xff0c;对主体权限和行为进行判断&#xff0c;最常见的是网络访问控制&#xff0c;也就是零信任网络访问&#xff08;ZTNA&#xff…

TP5 解决如何实现生成并导出Word文档功能

今天连续更新两篇文章&#xff0c;上一篇讲了一下如何生成PDF并导出文件的功能 接下来我们就来拼一拼怎么实现生成并导出word文档的功能 话不多说 我们直接上流程&#xff1a; 1.下载安装phpword插件&#xff1a;composer require phpoffice/phpword 2.安装成功后该插件在我们项…

Linux——高级I/O操作(三)

目录 I/O多路复用 异步I/O I/O多路复用 阻塞型I/O 相对于非阻塞型 I/O 来说&#xff0c;最大的优点就是在设备的资源不可用时&#xff0c;进程主动放弃 CPU&#xff0c;让其他的进程运行&#xff0c;而不用不停地轮询&#xff0c;有助于提高整个系统的效率。但是其缺点也是比…

Sharding-JDBC之水平分表

目录一、简介1.1、垂直分表1.2、水平分表二、maven依赖三、数据库3.1、创建数据库3.2、创建表四、配置&#xff08;二选一&#xff09;4.1、properties配置4.2、yml配置五、实现5.1、实体5.2、持久层5.3、服务层5.4、测试类5.4.1、保存数据5.4.2、查询数据一、简介 1.1、垂直分…

Java入坑之注解和反射

一、注解概念0 1.1基本定义 Java注解是附加在代码中的一些元信息&#xff0c;用于一些工具在编译、运行时进行解析和使用&#xff0c;起到说明、配置的功能 1。它们可以用来标记类、方法、变量、参数和包等 简而言之&#xff0c;注解就是对于代码中某些鲜活个体的贴上去的一张…

企业如何开发自己的小程序

小程序是一种轻量级的应用程序&#xff0c;被广泛用于社交娱乐、电商购物等领域。对于企业而言&#xff0c;开发自己的小程序可以为客户提供更加个性化的服务&#xff0c;提高品牌认知度和用户忠诚度。本文将介绍企业如何开发自己的小程序&#xff0c;并通过一个具体的案例来说…

【CSS】图片底部空白缝隙处理 ( 使用居中对齐 / 顶部对齐 / 底部对齐 | 将行内元素 / 行内块元素转为块级元素 )

文章目录一、图片底部空白缝隙问题二、图片底部空白缝隙问题解决方案一 ( 使用居中对齐 / 顶部对齐 / 底部对齐 )三、图片底部空白缝隙问题解决方案二 ( 将行内元素 / 行内块元素转为块级元素 )一、图片底部空白缝隙问题 在上一篇博客中 , 使用默认的基线对齐 , 会发现 行内块级…

java 利用正则来分析日志(IT枫斗者)

利用正则来分析日志&#xff08;IT枫斗者&#xff09; 环境接口的历史并发数&#xff0c;然而运维并没有做相关的统计&#xff0c;没办法&#xff0c;只能拿到服务器近一个月的 Nginx access 日志&#xff0c;根据正则匹配所有我的接口服务的日志&#xff0c;然后统计每一秒内…

《低代码PaaS驱动集团企业数字化创新白皮书》-平台化加低代码提供破解之道(2)

平台化加低代码提供破解之道 低代码向业务的赋能&#xff1a;以效率和创新为核心&#xff0c;提升组织效率&#xff0c;促进创新&#xff0c;优化体验 通过IDC对大型企业的调研发现&#xff0c;当前拥有100个及以上应用数量的企业已经高达70%&#xff1b;IDC预测 ,2025年&…

〖Python网络爬虫实战⑮〗- pyquery的使用

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;目前专栏免费订阅&#xff0c;在转为付费专栏前订阅本专栏的&#xff0c;可以免费订阅付费…

数据结构——队列(C语言实现)

队列的概念与结构 队列是一种特殊的线性结构&#xff0c;数据只能在一端插入&#xff0c;数据也只能在另一端进行删除。插入数据的那一端称之为队尾&#xff0c;插入数据的动作称之为入队。删除数据的那一端称之为队头&#xff0c;删除数据的动作称之为出列。队列遵守的是FIFO…

LeetCode 189.轮转数组

文章目录&#x1f4a1;题目分析&#x1f4a1;解题思路&#x1f6a9;思路1:暴力求解 --- 旋转k次&#x1f514;接口源码&#xff1a;&#x1f6a9;思路2:额外开数组&#x1f514;接口源码&#xff1a;&#x1f6a9;思路3:三段逆置&#x1f4cd;算法设计&#x1f514;接口源码&am…

JavaWeb开发 —— Web入门

目录 一、Spring 二、SpringBootWeb快速入门 三、HTTP协议 1. 概述 2. 请求协议 3. 响应协议 四、Web服务器 - Tomcat 1. 介绍 2. 基本使用 3. 入门程序解析 一、Spring ① 官网&#xff1a;http://spring.io ② Spring 发展到今天已经形成了一种开发生态圈&…