计算机网络——传输层(五)

news2024/12/24 21:13:34

前言:

最重要的网络层我们已经学习完了,下面让我们再往上一层,对网络层的上一层传输层进行一个学习与了解,学习网络层的基本概念和网络层中的TCP协议和UDP协议

目录

​编辑一、传输层的概述:

1.传输层:

2.端口号:

二、传输层的两个重要协议

1.TCP

        (1)传输控制协议 :TCP

        (2)TCP的主要特点是:        

        (3)窗口:

        (4)TCP的三次握手和四次挥手

2.UDP

        (1)用户数据报协议 :UDP

        (2)UDP的主要特点是:

        (3)UDP首部的概念


 

一、传输层的概述:

1.传输层:

        传输层提供端到端服务

        从通信和信息处理的角度看,传输层向上层应用层提供通信服务

        所谓的端口,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号。

2.端口号:

俩个客户端qq与wx的消息传递过程

FTP:21 (20)* :FTP(文件传输协议),21连接;20传输数据

TELNET:23*:TELNET(远程登录)

SMTP:25*:SMTP(电子邮件传输协议),POP3(邮局协议版本3) :110

DNS:53*:DNS(域名系统)

TFTP:69:TFTP(简单文件传输协议)

HTTP:80*:HTTP(超文本传输协议)

SNMP:161:SNMP(简单网络管理协议)

HTTPS:443*:HTTPS(超文本传输安全协议)

二、传输层的两个重要协议

1.TCP

        (1)传输控制协议 :TCP

                TCP是TCP/IP体系中较为复杂的协议,是传输层中最重要的协议。

        (2)TCP的主要特点是:        

                (1).TCP是面向连接的传输层协议
                (2).TCP提供
可靠的交付服务
                (3).TCP提供
全双工通信
                (4).TCP是面向字节流

        (3)窗口:

                (1).固定窗口:如果窗口过小,当传输比较大的数据的时候需要不停的对数据进行确认,这个时候就会造成很大的延迟。

                (2).滑动窗口:滑动窗口通俗来讲就是一种流量控制技术。它本质上是描述接收方的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据,如果发送方收到接收方的窗口大小为0的TCP数据报,那么发送方将停止发送数据,等到接收方发送窗口大小不为0的数据报的到来。

                (3).拥塞处理和流量控制

        (4)TCP的三次握手和四次挥手

        三次握手:

        三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号并为后面的可靠性传送做准备。

第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN。此时客户端处于 SYN_SENT 状态。 

(首部的同步位SYN=1,初始序号seq=client_isn,SYN=1的报文段不能携带数据,但要消耗掉一个序号。)

第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN。同时会把客户端的 ISN + 1 作为ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_RCVD 的状态。
(在确认报文段中SYN=1,ACK=1,确认号ack=client_isn+1,初始序号seq=server_isn。)

第三次握手:客户端收到 SYNACK 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接。
(确认报文段SYN=0,ACK=1,确认号ack=server_isn+1,序号seq=client_isn+1(初始为seq=client_isn,第一个报文段消耗了一个序号,所以第二个报文段要+1),此时ACK报文段可以携带数据,不携带数据则不消耗序号。)

        四次挥手: 

        

建立一个连接需要三次握手,而终止一个连接要经过四次挥手,这是由TCP的半关闭(half-close)造成的。所谓的半关闭,其实就是TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。

TCP 连接的拆除需要发送四个包,因此称为四次挥手(Four-way handshake),客户端或服务端均可主动发起挥手动作。

第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于 FIN_WAIT1 状态。
(发出连接释放报文段(FIN=1,序号seq=u),并停止再发送数据(此时客户端仍然能够接收从服务器传输过来的数据,同时注意这里不发送的是正常连接时传输的数据,而不是一切数据,所以客户端仍然能够发送ACK确认报文),主动关闭TCP连接,进入FIN_WAIT1(终止等待1)状态,等待服务端的确认。)
第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT 状态。
(服务端收到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号seq=v),服务端进入CLOSE_WAIT(关闭等待)状态,此时的TCP处于半关闭状态,客户端到服务端的连接释放。客户端收到服务端的确认后,进入FIN_WAIT2(终止等待2)状态,等待服务端发出的连接释放报文段。此时服务端开始准备释放服务端到客户端方向上的连接。)
第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样发送 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。(服务端没有要向客户端发出的数据,服务端发出连接释放报文段(FIN=1,ACK=1,序号seq=w,确认号ack=u+1),服务端进入LAST_ACK(最后确认)状态,等待客户端的确认。此时服务端停止在服务端到客户端的方向上发送数据,但是服务器端仍然能够接收从客户端传输过来的数据。)
第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 +1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态,服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。
(客户端收到服务端的连接释放报文段后,对此发出确认报文段(ACK=1,seq=u+1,ack=w+1),客户端进入TIME_WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,客户端才进入CLOSED状态。)

2.UDP

        (1)用户数据报协议 :UDP

        UDP是在IP数据报服务之上增加了一些功能,增加了复用和分用的功能以及差错检测的功能

        (2)UDP的主要特点是

        1.UDP是无连接的
        2.UDP尽最大努力交付
        3.UDP面向报文且没有拥塞控制
        4.UDP开销较小传输效率较高

        (3)UDP首部的概念

         UDP协议首部格式

        UDP首部有8个字节,由4个字段构成,每个字段都是两个字节

        1. 源端口号 : 可有可无,需要对方回信时选用,不需要时全部置0。

        2. 目的端口号 :必须有,在终点交付报文的时候需要用到。

        3. 长度 :UDP的数据报的长度(包括首部和数据)其最小值为8字节(只有首部)。

        4. 校验和 :检测UDP数据报在传输中是否有错,有错则丢弃。 该字段是可选的,当源主机不想计算校验和,则直接令该字段全为0。

         当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交给应用进程。 如果接收方UDP发现收到的报文中的目的端口号不正确(不存在对应端口号的应用进程0,),就丢弃该报文,并由ICMP发送“端口不可达”差错报文给对方。

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

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

相关文章

二叉树的前序遍历 、二叉树的最大深度、平衡二叉树、二叉树遍历【LeetCode刷题日志】

目录 一、二叉树的前序遍历 方法一:全局变量记录节点个数 方法二:传址调用记录节点个数 二、二叉树的最大深度 三、平衡二叉树 四、二叉树遍历 一、二叉树的前序遍历 方法一:全局变量记录节点个数 计算树的节点数: 函数TreeSize用于…

LLM之RAG理论(四)| RAG高级数据索引技术

本文将重新审视分块技术以及其他方法,包括查询增强、层次结构和知识图谱。 一、简单RAG架构快速概览 在2023年年初,我的主要关注点集中在Vector DB及其在更广泛的设计领域中的表现上。然而,随着2023年的收尾,这一领域出现了重大进…

Spring MVC - Controller的创建与使用

控制器Controller是处理器,是真正处理请求的组件 1 创建Controller 一般在src/main/java/com/qdu下建立一个controller包用来存放所有控制器。当创建一个控制器时,首先要记得使用Controller标记将该类注册成为一个控制器类。 然后在SpringMVCConfig类…

项目 杂碎 知识点 汇总!!!

Vue !!! setup生命周期 使用 nextTick !!获取节点 onMounted中可以使用JS,获取节点,setup生命周期无法获取节点 vue实现文本粘贴复制 Vue遍历对象 1、使用v-for指令:可以直接遍历对象的键和值 2、使用 Object.keys…

git基础概念和常用命令(日常开发收藏备用)

目录 ### 常用命令 ### 远程仓库与克隆 ### 分支管理 ### 子模块(Submodule) ### 其他高级操作 ### 交互式暂存(Interactive Staging) ### cherry-pick ### rebase ### reflog与reset ### 子树合并(Subtree …

【Maven】<scope>provided</scope>

在Maven中,“provided”是一个常用的依赖范围,它表示某个依赖项在编译和测试阶段是必需的,但在运行时则由外部环境提供,不需要包含在最终的项目包中。下面是对Maven scope “provided”的详细解释: 编译和测试阶段可用…

Vue3全局属性app.config.globalProperties

文章目录 一、概念二、实践2.1、定义2.2、使用 三、最后 一、概念 一个用于注册能够被应用内所有组件实例访问到的全局属性的对象。点击【前往】访问官网 二、实践 2.1、定义 在main.ts文件中设置app.config.globalPropertie import {createApp} from vue import ElementPl…

.NET国产化改造探索(二)、银河麒麟安装人大金仓数据库

随着时代的发展以及近年来信创工作和…废话就不多说了,这个系列就是为.NET遇到国产化需求的一个闭坑系列。接下来,看操作。 上一篇介绍了如何安装银河麒麟操作系统,这篇文章详细介绍下如何在银河麒麟操作系统上安装人大金仓数据库。 准备安…

LangChain.js 实战系列:搭配 LangSmith 实现调试、监控、测试

📝 LangChain.js 是一个快速开发大模型应用的框架,它提供了一系列强大的功能和工具,使得开发者能够更加高效地构建复杂的应用程序。LangChain.js 实战系列文章将介绍在实际项目中使用 LangChain.js 时的一些方法和技巧。 LangSmith 是 LangCh…

RK3568平台开发系列讲解(Linux系统篇)PWM系统编程

🚀返回专栏总目录 文章目录 一、什么是PWM二、PWM相关节点三、PWM应用编程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 PWM 的系统编程。 一、什么是PWM PWM,即脉冲宽度调制(Pulse Width Modulation)

2023年下半年信息系统项目管理师考试

目录 引言 结果 论文 案例分析 综合知识 总结 引言 2023年下半年参加了信息系统项目管理师考试,考试结果情理之中,意料之外。论文压线,综合和案例差一分。从个人参加考试的整个过程来看,属于历史性的突破。以本文&#xff…

稳定币记录

稳定币: 稳定币(Stablecoin)是一种加密货币,其设计目的是维持相对稳定的价值,通常与某种法定货币(如美元、欧元)或其他资产(如黄金)挂钩。稳定币通过将加密货币与相应的…

详解Vue3中的鼠标事件mousemove、mouseover和mouseout

本文主要介绍Vue3中的常见鼠标事件mousemove、mouseover和mouseout。 目录 一、mousemove——鼠标移动事件二、mouseover——鼠标移入事件三、mouseout——鼠标移出事件 下面是Vue 3中常用的鼠标事件mousemove、mouseover和mouseout的详解。 一、mousemove——鼠标移动事件 鼠…

DevC++ easyx实现视口编辑--像素绘图板与贴图系统

到了最终成果阶段了,虽然中间有一些代码讲起来没有意思,纯靠debug,1-1解决贴图网格不重合问题,这次是一个分支结束。 想着就是把瓦片贴进大地图里。 延续这几篇帖子,开发时间也从2023年的4月16到了6月2号,80小时基本…

【K8S 部署】基于kubeadm搭建Kurbernetes集群

目录 一、基本架构 二、环境准备: 三、安装部署 1、所有节点安装docker 2、、所有节点安装kubeadm,kubelet和kubectl 3、配置网络--flannel 4、测试 pod 资源创建 四、安装部署与k8s集群对接的Harbor仓库 五、Dashboard安装部署: 一、基本架构…

jupyter notebook打开其他盘的文件

jupyter notebook打开其他盘文件 打开jupyter notebook打开terminal输入:jupyter-notebook 路径打开你想打开的工程的文件 打开jupyter notebook 打开terminal 输入:jupyter-notebook 路径 打开你想打开的工程的文件

【中小型企业网络实战案例 六】配置链路聚合

相关文章学习: 【中小型企业网络实战案例 五】配置可靠性和负载分担 热门IT课程【视频教程】(思科、华为、红帽、oracle等技术)https://xmws-it.blog.csdn.net/article/details/134398330?spm1001.2014.3001.5502 当CORE1或者CORE2的上…

【Elasticsearch源码】 分片恢复分析

带着疑问学源码,第七篇:Elasticsearch 分片恢复分析 代码分析基于:https://github.com/jiankunking/elasticsearch Elasticsearch 8.0.0-SNAPSHOT 目的 在看源码之前先梳理一下,自己对于分片恢复的疑问点: 网上对于E…

微服务雪崩问题及解决方案

雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。 如果服务提供者A发生了故障,当前的应用的部分业务…

机器学习(二) -- 数据预处理(2)

系列文章目录 机器学习(一) -- 概述 机器学习(二) -- 数据预处理(1-3) 机器学习(三) -- 特征工程(1-2) 未完待续…… 目录 系列文章目录 前言 四、【数…