百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

小白看了也能懂的TCP/IP基础

nanshan 2024-11-25 15:27 13 浏览 0 评论

TCP/IP(Transmission Control Protocol/Internet Protocol)传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称TCP/IP协议。

经典的OSI七层模型,TCP/IP被分为4层,每层的协议的工作方式不一样,所封装的上层数据的方式也不一样。

二、端口号

IP地址是用来查找和发现网络中的地址的,端口号是用来进行程序相互通信的(打个比方:IP地址是一栋楼,端口就是进出这栋楼的入口),一个端口16Byte,即2^16=65536个,1~1023为公认的端口绑定了某些服务协议,不能随便分配,从1024—49151是被注册的端口,也成为“用户端口”,其他的为临时端口。

常用的有:

  • FTP : 21
  • TELNET : 23
  • SMTP : 25
  • DNS : 53
  • TFTP : 69
  • HTTP : 80
  • SNMP : 161
  • SSH :22

三、IP数据报

IP数据报的首部是5X4=20Byte,IP数据报=首部+数据部分

版本号:4位,0100表示IPV4,0110标志IPV6

首部长度:4位,表示首部的长度,包括可选字段

服务类型:最小时延、最大吞吐量、最高可靠性、最小花费4种,每种占1位

总长度:报头长度+数据部分长度=总长度(16位)最多可以2^16=65536字节

标识:16位,当数据报由于长度超过网络的MTU而必须分片时,根据分片中的标识字段是否相同判断这些分片是否同一个数据报的分片,以此来进行分片的重组。通常每发送一份报文它的值就会加 1。

标志:3位,只有2位有意义。第二位MF(More Fragment)位1表示后面还有‘’分片”的数据报,为0表示已到最后一个数据报;第三位DF(Don’t Fragment)为1意思是“不能分片”。只有当DF=0时才允许分片。

偏移:13 位,在接收方进行数据报重组时用来标识分片的顺序。

生存时间:8 位,用于设置数据报可以经过的最多的路由器个数。TTL 的初始值由源主机设置(通常为 32 或 64),每经过一个处理它的路由器,TTL 值减 1。如果一个数据报的 TTL 值被减至 0,它将被丢弃。

协议:8 位,用来标识是哪个协议向 IP 传送数据。ICMP 为 1,IGMP 为 2,TCP 为 6,UDP 为 17,GRE 为 47,ESP 为 50。

首部校验和:根据 IP 首部计算的校验和码。

源 IP 和目的 IP :数据报头还会包含该数据报的发送方 IP 和接收方 IP。

选项:是数据报中的一个可变长、可选的信息,不常用,多用于安全、军事等领域。

C++音视频开发学习资料:点击领取→音视频开发(资料文档+视频教程+面试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

四、IP的地址的分类

IP的地址分成4类ipv4地址占4个字节(32位)

A B C D E四类网络地址

例如:192.168.1.100

网络号:区分不同的网络(局域网)

? 主机号:区分同一个网络下不同的主机

A类地址:要求网络号占一个字节,主机号占3个字节,并且要求网络号(8位二进制)必须是0开头

? 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

? 网络号 0–127

? 主机号 1—254.254.254

B类地址:要求网络号占两个字节,主机号占2个字节,并且要求网络号(16位二进制)必须是10开头

? 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

? 网络号 128.0–191.255

C类地址:要求网络号占三个字节,主机号占1个字节,并且要求网络号(24位二进制)必须是110开头

? 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

? 网络号 192.0.0–223.255.255

D类地址:组播专用地址,不区分网络号和主机号,必须是1110开头

? 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

E类IP地址

以“llll0”开始,为将来使用保留。240.0.0.0到255.255.255.254,255.255.255.255用于广播地址。

五、ping和traceroute程序

ping程序和traceroute都是基于ICMP协议的工具。

用ping可以检测两台主机是否连,下图就是我用Ubuntu跟Windows各自ping的信息。ping 命令会返回一个 TTL 值,我们可以使用它来判断目标的操作系统类型。常见操作系统缺省 TTL 值如下:

UNIX TTL: 255;

Linux TTL: 64;

WINDOWS 95/98 TTL: 32;

Windows NT 4.0/2000/XP/2003/7/8/10 TTL:128。

traceroute 程序是用来侦测主机到目的主机之间所经路由情况的重要工具。

1、Linux需要安装traceroute才能进行侦测。

2、Windows用tracert进行侦测,下图是先经过我笔记本WiFi连接的192.168.1.1的路由,再经过一系列的路由最终到达谷歌的8.8.8.8

六、UDP

UDP (User Datagram Protocol)协议与TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输层,处于IP协议的上一层。

它的主要特点有:

UDP 是无连接的,发送数据之前不需要建立连接(而 TCP 需要),减少了开销和时延。

UDP尽最大努力交付,不保证交付可靠性,因此主机不需要维护复杂的连接状态;。

UDP 是面向报文的,对于从应用层交付下来的 IP 数据报

UDP的首部开销小,只有8个字节,它比TCP的20个字节的首部要短。

UDP 没有拥塞控制,出现网络拥塞时发送方也不会降低发送速率。这种特性对某些实时应用是很重要的,比如 IP 电话,视频会议等,它们允许拥塞时丢失一些数据,因为如果不抛弃这些数据,极可能造成时延的累积。

UDP 支持一对一、一对多、多对一和多对多的交互通信。

UDP报文

UDP 数据报可分为两部分:UDP 报头和数据部分。其中数据部分是应用层交付下来的数据。UDP 报头总共 8 字节(2字节源端口、2字节目的端口、2字节长度、2字节校验和)

七、TCP

TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

它的主要特点有:

面向字节流;

面向连接;

可靠通信方式,无差错、不丢失、不重复、按顺序。;

TCP 连接是 点对点 的,一条 TCP 连接只能连接两个端点。

UDP 支持一对一、一对多、多对一和多对多的交互通信。

TCP报文

TCP 数据报可分为两部分:TCP 报头和数据部分。其中数据部分是应用层交付下来的数据。TCP 报文段的报头有前 20 字节的固定部分

各字段的功能:

源端口:2字节

目的端口:2字节

序号:4字节,范围0~2^32-1,报头中的序号字段值则指的是本报文段数据的第一个字节的序号。

确认号:4字节,期望收到下个报文段的第一个数据字节的序号

数据偏移:4位,TCP报文段的报头长度,20字节+选项字段

保留:6位(URG、ACK确认、PSH推送、RST复位、SYN同步、FIN终止)

窗口:2字节,指自己的接收窗口大小

校验和:2字节,用于校验数据在传输中是否出错

紧急指针:2字节,当保留字段的URG=1有效

选项:长度可变,最长40字节

相关推荐

在 Ubuntu 上安装 Zabbix(以 Zabbix 6.4 LTS 版本为例)

Zabbix是一个流行的开源监控解决方案,能够监控各种网络参数和服务器健康状态。一、环境准备系统要求Ubuntu20.04/22.04LTS至少2GBRAM(生产环境建议4GB+)至少1...

如何在 Ubuntu 24.04 服务器上安装 Apache Solr

ApacheSolr是一个免费、开源的搜索平台,广泛应用于实时索引。其强大的可扩展性和容错能力使其在高流量互联网场景下表现优异。Solr基于Java开发,提供了分布式索引、复制、负载均衡及自...

如何在 Ubuntu 24.04 LTS 或 22.04/20.04 上安装 Apache Maven

Maven是由Apache托管的开源工具,用于管理Java项目。它包含一个项目对象模型(POM):一个配置文件(XML),其中包含项目的基本信息,包括配置、项目依赖项等。Maven可以处理...

Cursor的终极对手——Trae Pro最新系统提示词

前段时间,字节的AI编程神器Trae国际版,终于甩出了Pro订阅计划!很多对它又爱又恨的小伙伴,直呼:终于等到你。爱它,是因为Trae长期免费+体验真香;恨它?还不是那该死的排队等待,...

AI系统提示词:V0(ai代码提示)

以下是对V0系统提示词(SystemPrompt)的分部分讲解与解读,帮助你理解其核心内容和设计意图。V0系统提示词##CoreIdentity-Youarev0,Vercel&...

8岁男童失踪第13天,搜救人员发现可疑水库,更恶心的事情发生了

Lookingatyourrequest,Ineedtorewritethearticleaboutthe8-year-oldmissingboywhilemaking...

docker常用指令及安装rabbitMQ(docker安装zabbix)

一、docker常用指令启动docker:systemctlstartdocker停止docker:systemctlstopdocker重启docker:systemctlrestart...

三步教你用Elasticsearch+PyMuPDF实现PDF大文件秒搜!

面对100页以上的大型PDF文件时,阅读和搜索往往效率低下。传统关系型数据库在处理此类数据时容易遇到性能瓶颈,而Elasticsearch凭借其强大的全文检索和分布式架构,成为理想解决方案。通过...

ElasticSearch中文分词插件(IK)安装

坚持原创,共同进步!请关注我,后续分享更精彩!!!前言ElasticSearch默认的分词插件对中文支持很不友好。一段话按规则会以每个中文字符来拆解,再分别建立倒排索引。如"中华人民共和国国歌...

SpringBoot使用ElasticSearch做文档对象的持久化存储?

ElasticSearch是一个基于Lucene的开源搜索引擎,广泛应用于日志分析、全文搜索、复杂查询等领域,在有些场景中使用ElasticSearch进行文档对象的持久化存储是一个很不错的选择...

Elasticsearch数据迁移方案(elasticsearch copyto)

前言最近小编要去给客户部署一套系统涉及到了Mysql和ES数据的迁移,下面就给大家分享一下ES数据迁移的几套方案,根据具体的使用场景来选择不同的迁移方案能使你事倍功半,话多说下面就一一介绍。Elast...

Rancher部署单体ElasticSearch(rancher2.5部署)

Rancher是k8s图形管理界面,之前曾有写文章介绍如何安装。ElasticSearch是热门搜索引擎,很多地方都有用到,常规安装部署略显繁琐,本文介绍在k8s下用rancher简易部署ES。1.在...

Elasticsearch在Java项目的搜索实践:从零开始构建高效搜索系统

Elasticsearch在Java项目中的搜索实践:从零开始构建高效搜索系统在现代的Java项目中,数据量激增,传统的数据库查询方式已经无法满足快速检索的需求。这时,Elasticsearch(E...

小白入门-Kibana安装(kibana安装配置)

一Kibana基础1.1介绍Kibana是一款免费且开放的前端应用程序,其基础是ElasticStack,可以为Elasticsearch中索引的数据提供搜索和数据可视化功能。Kiban...

Docker上使用Elasticsearch,Logstash,Kibana

在对一个项目做性能测试时我需要处理我们web服务器的访问日志来分析当前用户的访问情况。因此,我想这是试用ELK的一个好机会。ELK栈首先要注意的是使用它是非常简单的。从决定使用ELK到在本机上搭一个...

取消回复欢迎 发表评论: