TCP/IP基础

TCP/IP的概念

TCP/IP是一个协议簇,包括多个协议

定义了计算机操作系统如何连入因特网,以及数据如何在他们之间传输的标准。

TCP/IP的分层结构

TCP/IP按照层次可以分成四层,应用层、传输层、网络层和数据链路层

应用层

包括虚拟终端协议TELNET,文件传输协议FTP,超文本传送协议HTTP等高层协议。

传输层

包括UDP协议,TCP协议

网络层

使主机把分组发往任何网络,并使分组独立的传送向目标。IP协议

数据链路层

负责接收上层发来的IP数据报并向外发送,或接受处理网络上传来的物理帧

如果两台计算机在不同的网段中,那么需要经过n个路由器,具体如图所示

而目的主机收到数据包后,如何经过各种协议栈到达应用程序呢

以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,指除去协议首部之外实际传输的数据)是IP、ARP还是RARP协议的数据报,然后交给相应的协议处理。假如是IP数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP,然后交给相应的协议处理。假如是TCP段或UDP段,TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。IP地址是标识网络中不同主机的地址,而端口号是同一台主机上标识不同进程的地址,IP地址和端口号合起来标识网络中唯一的进程。
注意,虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路层,IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、IGMP与IP同属于网络层,TCP和UDP属于传输层。

应用层

DNS

实现域名与实际IP地址之间的转换。

传输层

为应用层提供会话和数据报通信服务。

TCP协议

是面向连接的、保证高可靠性的传输层协议。

会将应用层数据加上一个首部。

typedef struct TCP_HEADER//TCP头定义,共20个字节
{
short sSourPort;
//源端口号16bit
short sDestPort;//目的端口号16bit
unsigned int uiSequNum;//序列号32bit
unsigned int uiAcknowledgeNum;//确认号32bit
short sHeaderLenAndFlag;前4位:TCP头长度;中6位:保留;后6位:标志位
short sWindowsize;//窗口大小16bit
short sCheckSum;
//检验和16bit
short surgentPointer;//紧急数据偏移量16b1t
}TCP_HEADER,*PTCP_HEADER;

UDP协议

是无连接不可靠的传输层协议

typedef struct UDP_HEADER
//UDP头定义,共8个字节
{
unsigned short m_usSourPort;//源端口号16b1t
unsigned short m_usDestPort;//目的端口号16b1t
unsigned short m_usLength;//数据包长度16b1t
unsigned short m_usCheckSum;//校验和16b1t
}UDP_HEADER,*PUDP_HEADER;

网络层

向上层提供简单灵活的、无连接的数据报服务

IP协议

将上层数据报封装成IP数据包后进行传输,如果数据包太大,还需要分片传输

IP协议特点

不可靠、无连接、无状态

struct iphdr{
#if defined( LITTLE ENDIAN BITFIELD)
u8 ih1:4,
version:4;
#elif defined{ BIG ENDIAN BITFIELD)
u8 version:4,
ih1:4;
#else
#error "Please fix <asm/byteorder.h>"
#endif
u8 tos;
be16 tot len;
be16 id;
be16 frag off;
u8 ttl;
u8 protocol;
sum16 check;
be32 saddr;
be32 daddr;
/*The options
start here.*/
};

IP数据包分片

IP协议在传输数据包的时候将数据包分成n片传输,在目的系统中进行重组。

最大长度MTU=1500bit

ARP协议

将IP地址转化为MAC地址

工作流程

1.本地主机在局域网中广播ARP请求

2.目的地址收到这个广播报文之后用ARP协议对其解析,并发送ARP应答包

3.本地主机收到ARP应答后开始传送数据报

RARP协议

允许局域网的物理机器从网关服务器的ARP表中或者缓存上请求其IP地址

工作流程

1.主机发送一个本地的RARP广播

2.RARP服务器收到此请求后检查RARP表,查找该MAC地址对应的IP地址

3.如果存在,就给主机发送一个响应数据包,不存在就不做任何回应

4.主机得到IP地址后就开始通信

ICMP协议

用于探测网络是否联通、主机是否可达、路由是否可用等

可分为两类:差错报文和查询报文

数据链路层

基本概念

将源计算机网络层的数据可靠的传输到相邻节点目标计算机的网络层

主要功能

  1. 为网络层提供服务
  2. 成帧、帧定界、帧同步、透明传输
  3. 差错控制功能
  4. 流量控制
  5. 链路管理
  6. MAC寻址
typedef struct _MAC_FRAME_HEADER//数据帧头定义
{
char cDstMacAddress[6];//目的MAC地址
char cSrcMacAddress[6];//源MAC地址
short m_cType;//上一层协议类型,如0x0800代表上一层是IP协议,0x0806为ARP
}MAC_FRAME_HEADER,*PMAC_FRAME_HEADER;

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

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

相关文章

数据迁移: 安全高效转移数据, 满足企业业务需求和技术改进

天津鸿萌科贸发展有限公司从事数据安全服务二十余年&#xff0c;致力于为各领域客户提供专业的数据存储、数据恢复、数据备份、数据迁移等解决方案与服务&#xff0c;并针对企业面临的数据安全风险&#xff0c;提供专业的相关数据安全培训。 鸿萌数据迁移业务为众多企业顺利高效…

可视化建模与UML《类图实验报告》

史铁生&#xff1a; 余华和莫言扛着我上火车&#xff0c; 推着走打雪仗&#xff0c; 还带我偷西瓜&#xff0c; 被人发现后他们拔腿就跑&#xff0c; 却忘了我还在西瓜地里。 一、实验目的&#xff1a; 1、熟悉类图的构件事物。 2、熟悉类之间的泛化、依赖、聚合和组合关系…

Zypher Network:全栈式 Web3 游戏引擎,服务器抽象叙事的引领者

近期&#xff0c;《黑神话&#xff1a;悟空》的爆火不仅让 AAA 游戏重回焦点&#xff0c;也引发了玩家与开发者的热议。Web2 游戏的持续成功导致部分 Web3 玩家们的倒戈&#xff0c;对比之下 Web3 游戏存在生命周期短且商业模式难以明确的问题&#xff0c;尤其在当前加密市场环…

C++11的简介

杀马特主页&#xff1a;羑悻的小杀马特.-CSDN博客 ------ ->欢迎阅读 欢迎阅读 欢迎阅读 欢迎阅读 <------- 目录 一列表初始化的变化&#xff1a; 二左右值即各自引用的概念&#xff1a; 2.1左右…

Java 上机实践3(分支与循环语句)

&#xff08;大家好&#xff0c;今天分享的是Java的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 实验一&#xff1a;回文数 一、实验目的 二、实验要求 三、程序代码 四、实验结果 实验二&#xff1a;猜数字…

[MRCTF2020]PYWebsite1

如果输入的密钥是对的那么我们就直接跳转到flag.php页面 那么我们直接访问&#x1f60e;&#xff0c;他不带我们去我们自己去. 那就用XFF呗. 知识点&#xff1a; 定义&#xff1a;X-Forwarded-For是一个HTTP请求头字段&#xff0c;用于识别通过HTTP代理或负载均衡方式连接到W…

实时离线融合计算的数据同步实践

实时批量融合计算时&#xff0c;一般需要批量将数据推送到hbase供实时使用。 本文将通过两个典型场景--累计场景与最新分区场景&#xff0c;讨论批量和实时衔接的设计方案&#xff0c;解决批量延迟可能导致的问题。 累计场景 在之前的文章中讲述了实时离线结合共同计算客户1…

怎么做自己公司的小程序

我是【码云数智】平台的黄导&#xff0c;今天分享&#xff1a;怎么做自己公司的小程序 企业小程序怎么制作&#xff0c;利用可视化小程序模板搭建&#xff0c;企业能够轻松跨越技术门槛&#xff0c;快速响应市场变化。 01、小程序制作流程 02、微信小程序开发多少钱 03、微…

外包干了5年,技术退步太明显了。。。。。

先说一下自己的情况&#xff0c;本科生生&#xff0c;19年通过校招进入杭州某软件公司&#xff0c;干了差不多五年的功能测试&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了五年的功能测试&#xff0c;已经…

Java | Leetcode Java题解之第530题二叉搜索树的最小绝对差

题目&#xff1a; 题解&#xff1a; class Solution {int pre;int ans;public int getMinimumDifference(TreeNode root) {ans Integer.MAX_VALUE;pre -1;dfs(root);return ans;}public void dfs(TreeNode root) {if (root null) {return;}dfs(root.left);if (pre -1) {pr…

仪表板展示|DataEase看中国:历年双十一电商销售数据分析

背景介绍 2024年“双十一”购物季正在火热进行中。自2009年首次推出至今&#xff0c;“双十一”已经成为中国乃至全球最大的购物狂欢节&#xff0c;并且延伸到了全球范围内的电子商务平台。随着人们消费水平的提升以及电子商务的普及&#xff0c;线上销售模式也逐渐呈现多元化…

机器人课程——使用TIA Portal V15博图软件进行西门子组态——带显示屏

一.打开TIA Portal V15博图软件创建项目 1.选择创建新项目 创建完成后选择PLC 二.创建完成后选择设备PLC (此处以S7-1200 1214FC DC/DC/DC 为例) 三.添加扩展板&#xff08;如有——这里以223-1BL32-0XB0为例&#xff09; 四.更改扩展版地址 五.添加触摸屏&#xff08;这里以…

Java代码与数据库纽带——JDBC

ok&#xff0c;看了题目&#xff0c;就可以知道今天要分享的是JDBC 讲这个这之前&#xff0c;想讲讲之前的。 之前我们操作数据库基本都是通过MySQL客户端&#xff0c;进行编写sql语句来操作的。 但是我们在开发中一般都是通过代码来操控数据库的。 而且在我们日常开发中&a…

Webserver(5.6)服务器压力测试

目录 webbench是linux上一款知名的优秀的web性能压力测试工具。 测试处在相同硬件上&#xff0c;不同服务的性能以及在不同硬件上同一个服务的运行状况 展示服务器的两项内容&#xff1a;每秒钟响应请求数和每秒钟传输数据量 webbench首先fork多个子进程&#xff0c;每个子进程…

MySQL数据库基础(一) MySQL安装及数据类型

目录 一、MySQL数据裤简介 二、MySQL数据的安装 2.1、MySQL安装 2.2、修改MySQL密码登录策略 三、数据库基础管理 3.1、连接方式及数据储存流程 3.2、库管理命令 3.3、表管理命令 3.4、记录管理命令 四、MySQL数据类型 4.1、常见信息种类 4.2、字符型 4.3、数值型 4.4、日期时间…

好用的远程控制安卓和IOS端的手机软件有哪些?

在数字化时代&#xff0c;我们的工作和娱乐活动越来越依赖于移动设备。无论是在家中、办公室还是旅途中&#xff0c;能够远程控制我们的设备成为了一种高效便捷的需求。市场上涌现出了许多远程控制软件&#xff0c;它们各具特色&#xff0c;旨在提供最佳的用户体验。那么&#…

领夹无线麦克风哪个牌子好?双十一选无线领夹麦克风避开选购陷阱

在多媒体和远程通信日益普及的今天&#xff0c;无线领夹麦克风已成为提升音质和便利性的关键&#xff0c;它们在视频制作、网络直播、在线教育等多个领域中扮演着重要角色。面对市场上众多的产品和技术参数&#xff0c;消费者往往感到无从下手。不过不用过于担心&#xff0c;在…

开发中使用UML的流程_01概述

目录 CIM-1:定义业务流程 CIM-2:分析业务流程 ​CIM-3:定义系统范围 ​PIM-1:分析系统流程 PIM-2:分析业务规则 PIM-3:定义静态结构 PIM-4:定义操作和方法 开发中使用UML的流程,主要分为7部分,具体如下: CIM-1:定义业务流程 定义及分析业务流程是为了尽快理…

ArcGIS/QGIS按掩膜提取或栅格裁剪后栅格数据的值为什么变了?

问题描述&#xff1a; 现有一栅格数据&#xff0c;使用ArcGIS或者QGIS按照矢量边界进行按掩膜提取或者栅格裁剪以后&#xff0c;其值的范围发生了变化&#xff0c;如下&#xff1a; 可以看到&#xff0c;不论是按掩膜提取还是进行栅格裁剪后&#xff0c;其值的范围均与原来栅…

劫持微信聊天记录并分析还原 —— 合并解密后的数据库(三)

本工具设计的初衷是用来获取微信账号的相关信息并解析PC版微信的数据库。 程序以 Python 语言开发&#xff0c;可读取、解密、还原微信数据库并帮助用户查看聊天记录&#xff0c;还可以将其聊天记录导出为csv、html等格式用于AI训练&#xff0c;自动回复或备份等等作用。下面我…