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,然后再发一个确认表示第二步回来的信息收到了。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
9月前
|
域名解析 网络协议 安全
计算机网络TCP/IP四层模型
本文介绍了TCP/IP模型的四层结构及其与OSI模型的对比。网络接口层负责物理网络接口,处理MAC地址和帧传输;网络层管理IP地址和路由选择,确保数据包准确送达;传输层提供端到端通信,支持可靠(TCP)或不可靠(UDP)传输;应用层直接面向用户,提供如HTTP、FTP等服务。此外,还详细描述了数据封装与解封装过程,以及两模型在层次划分上的差异。
2044 13
|
9月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
261 18
|
9月前
|
Linux 网络安全 iOS开发
SecureCRT & SecureFX 9.6.3 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输
SecureCRT & SecureFX 9.6.3 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输
2046 4
SecureCRT & SecureFX 9.6.3 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输
|
10月前
|
网络协议
TCP/IP与OPC协议的深度比较
总的来说,TCP/IP和OPC协议各有其优点和应用场景。TCP/IP协议是网络通信的基础,而OPC协议则是工业自动化领域的重要工具。在实际应用中,我们需要根据具体的需求和场景,选择合适的协议。
394 11
|
12月前
|
Unix Linux Shell
Linux新手入门手册
在Linux或类Unix系统中,掌握一系列基础命令和快捷键是提升工作效率的关键。这些工具和技巧不仅能帮助用户更高效地管理系统,还能在日常使用中带来极大的便利。以下是对这些基础操作与快捷键的详细解析大全。
248 9
|
11月前
|
人工智能 运维 API
云栖大会 | Terraform从入门到实践:快速构建你的第一张业务网络
云栖大会 | Terraform从入门到实践:快速构建你的第一张业务网络
507 1
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
876 3
图卷积网络入门:数学基础与架构设计
|
JSON Dart 前端开发
鸿蒙应用开发从入门到入行 - 篇7:http网络请求
在本篇文章里,您将掌握鸿蒙开发工具DevEco的基本使用、ArkUI里的基础组件,并通过制作一个简单界面掌握使用
641 8
|
Web App开发 网络协议 安全
网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
Wireshark是一款开源和跨平台的抓包工具。它通过调用操作系统底层的API,直接捕获网卡上的数据包,因此捕获的数据包详细、功能强大。但Wireshark本身稍显复杂,本文将以用抓包实例,手把手带你一步步用好Wireshark,并真正理解抓到的数据包的各项含义。
5088 2
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
395 3