简单了解传输层协议之TCP和UDP

目录

一、什么是端口号?

二、TCP协议

2.1 TCP报文格式

2.2 三次握手

2.3 四次挥手

2.4 窗口流量控制

三、UDP协议

3.1 UDP报文格式

3.4 传输过程


一、什么是端口号?

我们自己的一台电脑上有时可能会同时运行多个进程软件来进行上网。那么当网络上的服务器响应我们电脑进程的请求并回复数据包发给我们电脑时,我们电脑从网卡中收到数据帧后,应该将数据包交给电脑中那个正在运行的进程软件进行处理呢? 此时端口号就派上用场了,端口号的作用就是用来区分主机上正在运行的不同服务软件,这也就是为什么网络服务端与客户端的通信数据帧在运输层都会包含一个源目端口号的原因,就是为了方便目地主机知道要将收到的数据包交给上层的那个正在运行的服务进行处理。

端口号范围:1-65535

1~1024称为知名端口号或固定端口号,这些端口号默认被永久分配给某个应用使用。如 80端口代表http、 telnet为23端口、 ssh为22端口、ftp为20/21号端口等。

1024以上的端口号被称为高位端口号或随机端口号,一般供用户自定义分配服务程序使用。

 

二、TCP协议

2.1 TCP报文格式

Seq:序列号------每发一个报文就会产生一个的序列号---1.2.3...6...

Ack: 对序列号确认----表明我收到了此个报文

HL:头部长度

SYN:请求建立连接

FIN : 请求断开连接

RST: 请求重新建立连接

ACK:确认、对标识位的确认

windows: 窗口,流量

 

2.2 三次握手

TCP建立连接:向对方发送数据前先给对方打声招呼,协商下通信参数、看双方通信链路是否稳定。

主机A: 10.11.12.13 ….

主机B: 100.101.102….

主机A和主机B要建立TCP连接

ack表示对方的确认,大ACK表示同意请求,小ack表示对对方包的确认收到。

1.主机A发送TCP连接 ---SYN=1 (请求建立连接) seq=10 (包序列标号)

2.主机B同意主机A与其建立连接 ACK=1 ack=11(表示收到了主机A的报文、可以发送下一个11报文了)、同时由于数据传输是双向的,此时主机B也需要与主机A建立连接请求。SYN=1 seq=100。所以综合起来报文包含ACK=1 ack=11, SYN=1 seq=100。

3.主机A收到主机B的请求建立连接、同意与其建立连接。ACK=1(同意) ack=101(表示收到主机B的请求报文了、主机B可以发送下个101报文给我了) seq=11(表示主机A发送的第二个报文)。综合起来报文包含ACK=1 ack=101 seq=11。

2.3 四次挥手

TCP关闭连接

场景:主机A数据传输完毕,但服务器向主机A响应的数据并没有发送完毕。

1.主机A数据传输完毕 FIN=1(请求断开连接)seq表示此次发送的是第几个包 ack 表示对服务器上次发来的包的确认。

2.服务器同意主机A向自身发送流量的方向断开连接  ACK=1

以上过程、主机A就完成了断开连接,无法再向服务器发送连接,以下过程结束双向连接断开,会话结束。

3.过了一会服务器向主机A发送流量结束,请求断开连接 FIN=1 seq表示现在发送的是第几个数据包 ack表示对主机A上次发送给自己的一波报文流量的确认。

4.主机A同意服务器与自己断开连接 ACK=1。

 

2.4 窗口流量控制

window窗口字段用于标识本机缓存区的大小 。缓存区有多大就表明自身可以储存多少流量以及每次可以发送多少流量出去。通过丢包确认机制互相协调,彼此之间缓存区的大小,来调整彼此之间每次可以接收和发送多少流量。

三、UDP协议

3.1 UDP报文格式

在向目的主机发送数据信息时,不需要给对方事先打招呼就直接将数据帧发送给目的主机。同时数据包在传输过程中有丢失就丢失了,源主机并不会在重新发送一份给目的主机。这样以来由于通信双发不需要事先发送数据报文建立连接、协商参数、也没有丢包重传机制,所以使用UDP进行通讯传输处理效率会很高,但无法保证通信的可靠性,因此对时延比较敏感的数据,一般选择UDP。如:语音、视频。

 

3.4 传输过程

 

由于UDP协议没提供数据确认重传机制,因此只能由使用UDP协议的主机上的应用程序来提供报文的确认、排序、流控等操作。

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis持久化及常见问题解决

持久化缓存雪崩缓存穿透缓存击穿缓存预热 持久化 Redis的储存形式:一份在内存、一份在磁盘。内存的是最新的;磁盘里的会隔一段时间更新。 Redis持久化方式: RDB:快照方式;将某⼀个时刻的内存数据,以⼆进制的⽅式写⼊…

Java---异常

文章目录 1. 异常概述2. try...catch3. Throwable成员方法4. 编译时异常和运行时异常区别5. 异常处理之throws6. 自定义异常7. throws和throw的区别 1. 异常概述 1. 异常:就是程序中出现了不正常的情况。 2. Error:严重问题,不需要处理。Exce…

【FMC140】 基于VITA57.4标准的双通道5.2GSPS(或单通道10.4GSPS)射频采样FMC+子卡模块

板卡概述 FMC140是一款具有缓冲模拟输入的低功耗、12位、双通道(5.2GSPS/通道)、单通道10.4GSPS、射频采样ADC模块,该板卡为FMC标准,符合VITA57.1规范,该模块可以作为一个理想的IO单元耦合至FPGA前端,8通道…

Raspberry Pi 2, 2 of n - Pi 作为 IoT 消息代理

目录 介绍 环境 先决条件 - 设置静态 IP 地址 安装 Mosquitto 启动/停止 Mosquitto 配置先决条件 - 安装 mqtt_spy 配置 Mosquitto 配置 Mosquitto - 无安全性 测试 Mosquitto 配置 - 无安全性 配置 Mosquitto - 使用密码身份验证 Mosquitto 测试 - 带密码验证 概括 介绍 在本文…

3.pytorch加载数据

1. Dataset 所谓Dataset,其实就是一个负责处理索引(index)到样本(sample)映射的一个类(class)。 torch.utils.data.Dataset 是一个表示数据集的抽象类。任何自定义的数据集都需要继承这个类并覆写相关方法。 Map式数据集 一个Map式的数据集必须要重写getitem(self…

JVM Optimization Learning(五)

一、JVM Optimization 1、G1 G1官网说明:Garbage First Garbage Collector Tuning The Garbage First Garbage Collector (G1 GC) is the low-pause, server-style generational garbage collector for Java HotSpot VM. The G1 GC uses concurrent and paralle…

数据结构之二叉堆解决问题

二叉堆 需求分析 Top K 问题 什么是 Top K 问题? 从海量数据中找出前 K 个数据。 比如:从 100 万个整数中找出最大的 100 个整数Top K 问题的解法之一:可以用数据结构 “堆” 来解决。 堆 堆是一种【完全二叉树】,可以分为【…

sparkc程序idea调试提示内存不足

报错如下: Exception in thread "main" java.lang.IllegalArgumentException: System memory 259522560 must be at least 471859200. Please increase heap size using the --driver-memory option or spark.driver.memory in Spark configuration. 测…

【Java 基础】19 多线程基础

文章目录 进程和线程进程(Process)线程(Thread) 线程的创建1)继承 Thread 类2)实现 Runnable 接口3)使用 Lambda 表达式4)总结 线程的状态状态的分类状态间转换 多线程是一种 同时执…

什么是网站?

这篇文章是我学习网站开发,阶段性总结出来的。可以帮助你 通俗易懂 地更加深刻理解网站的这个玩意。 一,网站和网页的区别? 网站是由一个个网页组成。我们在浏览器上面看到的每一个页面就是网页,这些 相关的 网页组成一个网站。…

用python删除指定目录下带某个字符串的图片

前言: 在文件处理中,有时我们需要批量删除指定文件夹中的特定类型文件。如果文件数量非常庞大,手动删除会非常麻烦,所有可以用 Python 编写一个简单而高效的脚本,自动执行重复性的任务,从而节省时间和精力&…

一起学docker系列之十八Docker可视化工具 Portainer:简介与安装

目录 前言1 简介2 安装过程2.1 创建docker容器数据卷2.2 构建运行protainer容器 3 Portainer 软件详细说明与界面导览3.1 查看本地Docker情况3.2 操作功能3.3 创建容器3.4 部署容器 4 Portainer的优势结语参考地址 前言 Docker作为容器化解决方案的热门工具,其可视…