CCNA 必备:Linux 网络基础知识入门及 tcp 协议(三)|学习笔记

简介: 快速学习CCNA 必备:Linux 网络基础知识入门及 tcp 协议

开发者学堂课程【Linux网络进阶 - TCP/IP协议及OSI七层模型CCNP 必备:Linux 网络基础知识入门及 tcp 协议学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/552/detail/7627


CCNA 必备:Linux 网络基础知识入门及 tcp 协议(三)

五、TCP 协议特性

1.工作在传输层

2.面向连接协议

3.全双工协议(双向的传输)

4.半关闭

5.错误检查

6.将数据打包成段,排序

7.确认机制

8.数据恢复,重传

9.流量控制,滑动窗口

10.拥塞控制,慢启动和拥塞避免算法


六、TCP 包头

决定TCP 特性的因素,位于传输层,传输层的报文头部TCP在中间,它的外层是网络层的头部,TCP是传输层,传输层在里面,内层应该是会话层的头部。

TCP处于网络层和会话层中间的位置,对应字母T,T字母前面是网络层,再往后是S,表示会话层。传输层是中间传输层的第一种格式,当然也有UDP 格式,传输层的TCP 头部的报文格式如下图所示。该图是按照二进制绘制的。

一行是0到31个位,共32位。其中0到15表示源端口,16到31表示目标端口。

   image.png

1、端口号定义: TCP 协议 PORT

端口号相当于应用程序的唯一标识,即一个程序的地址。传输层通过 port 号,确定应用层协议Port number:

tcp: 传输控制协议,面向连接的协议;通信前需要建立虚拟链路;结束后拆除链路0-65535

udp:User Datagram Protocol,无连接的协议0-65535

而0-1023这是互联网数字分配机构(IANA)进行分配的,如果自己开发一个软件,必然要使用某个端口号,此时不要用0到1023了,因为国际上有关于1023的标准定义,已经被一些通用著名程序使用了,可以使用高一些的端口号。

像22(ssh)、著名的HTTP(80)、HTTPS(443)、dns(53)、ftp(21,20等)、tftp(69)、smtp(25)、pop3(110)、imap(143)、ternet(23)、mysql(3306)、Oracle(1521)、sql server(1433)。1024-49151用户端口或注册端口,要求并不严格,分配给程序注册为某应用使用。

49152-65535:动态端口或私有端口,客户端程序随机使用的端口,其范围的定义:/proc/sys/net/ipv4/ip_local_port_range

2、源端口、目标端口

计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用 16 位表示的,可推算计算机的端口个数为 2^16 个

3、序列号

表示本报文段所发送数据的第一个字节的编号。在 TCP连接中所传送的字节流的每一个字节都会按顺序编号。

由于序列号由 32 位表示,所以每 2^32 个字节,就会出现序列号回绕,再次从 0 开始

4、确认号

表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送发:

我希望你(指发送方)下次发送的数据的第一个字节数据的编号是这个确认号

5、数据偏移

表示 TCP 报文段的首部长度,共 4 位,由于 TCP 首部包含一个长度可变的选项部分,需要指定这个 TCP 报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。

该字段的单位是 32 位(即 4 个字节为计算单位), 4位二进制最大表示 15,所以数据偏移也就是 TCP 首部最大 60字节

1.标记位

  • URG

表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当 URG=1 时才有效

  • ACK

表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当 ACK=1 时,前面的确认号字段才有效。

TCP 规定,连接建立后,ACK 必须为 1,带 ACK 标志的 TCP 报文段称为确认报文段

  • PSH

提示接收端应用程序应该立即从 TCP 接收缓冲区中读走数据,为接收后续数据腾出空间。

如果为 1, 则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在 TCP

接收缓冲区中

  • RST

如果收到一个 RST=1 的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。

或者说明上次发送给主机的数据有问题,主机拒绝响应,带 RST 标志的 TCP 报文段称为复位报文段

  • SYN

在建立连接时使用,用来同步序号。当 SYN=1,ACK=0 时,表示这是一个请求建立连接的报文段;当 SYN=1,ACK=1 时,表示对方同意建立连接。 SYN=1 ,说明这是一个请求建立连接或同意建立连接的报文。

只有在前两次握手中 SYN 才置为 1,带 SYN 标志的 TCP 报文段称为同步报文段

  • FIN

表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果 FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带 FIN 标志的 TCP 报文段称为结束报文段

7、通讯的面向连接:

   image.png

TCP是面向连接的协议,所谓面向连接就是在通讯之前要确保对方与自己有一个可靠的连接,它是通过三个过程来实现,俗称三次握手。例如,A想和B通讯,假设A是客户端,B是服务器地址和服务器。

客户端想连服务器的时候,如果用TCP协议,例如我们平时使用的HTTP 服务都是基于TCP协议,在进行通讯的时候,第一步要检查有没有可靠连接,会把标记的SYN(同步位)打为1,第一次的数据就以这样的方式发送出去了,发出去时也存有一个序列号,记作x。

发出去对方收到以后,确认并回ACK,然后再发一个确认表示第二步回来的信息收到了。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
80 2
|
1月前
|
域名解析 网络协议 安全
|
2月前
|
运维 监控 网络协议
|
1月前
|
Unix Linux Shell
linux入门!
本文档介绍了Linux系统入门的基础知识,包括操作系统概述、CentOS系统的安装与远程连接、文件操作、目录结构、用户和用户组管理、权限管理、Shell基础、输入输出、压缩打包、文件传输、软件安装、文件查找、进程管理、定时任务和服务管理等内容。重点讲解了常见的命令和操作技巧,帮助初学者快速掌握Linux系统的基本使用方法。
78 3
|
1月前
|
存储 Ubuntu Linux
2024全网最全面及最新且最为详细的网络安全技巧 (三) 之 linux提权各类技巧 上集
在本节实验中,我们学习了 Linux 系统登录认证的过程,文件的意义,并通过做实验的方式对 Linux 系统 passwd 文件提权方法有了深入的理解。祝你在接下来的技巧课程中学习愉快,学有所获~和文件是 Linux 系统登录认证的关键文件,如果系统运维人员对shadow或shadow文件的内容或权限配置有误,则可以被利用来进行系统提权。上一章中,我们已经学习了文件的提权方法, 在本章节中,我们将学习如何利用来完成系统提权。在本节实验中,我们学习了。
|
2月前
|
Ubuntu Linux 虚拟化
Linux虚拟机网络配置
【10月更文挑战第25天】在 Linux 虚拟机中,网络配置是实现虚拟机与外部网络通信的关键步骤。本文介绍了四种常见的网络配置方式:桥接模式、NAT 模式、仅主机模式和自定义网络模式,每种模式都详细说明了其原理和配置步骤。通过这些配置,用户可以根据实际需求选择合适的网络模式,确保虚拟机能够顺利地进行网络通信。
115 1
|
10天前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
47 17
|
20天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
21天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
43 10
|
23天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
46 10