IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 传输层协议介绍 -> 正文阅读

[网络协议]传输层协议介绍

  1. TCP协议介绍
  2. TCP报文格式
  3. TCP三次握手
  4. TCP四次挥手
  5. UDP协议介绍
  6. 常见协议及端口
  7. 总结

1.TCP协议介绍

无连接网络协议,是指通信双方不需要先建立一条通信线路,而是把每个带有目的地址的包送到网络线路上,由系统自主选定线路进行传输。比如qq发消息。

TCP是面向连接的、可靠的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传输。每一个TCP都有发送缓存和接收缓存,用来临时存储数据。

TCP报文段

TCP将若干个字节构成一个分组,叫报文段。

TCP报文段封装在IP数据报中。

?

2.TCP报文格式

源端口号(16)

目标端口号(16)

序号(32)

确认号(32)

首部长度(4)

保留

(6)

U

R

G

A

C

K

P

S

H

R

S

T

S

Y

N

F

I

N

窗口大小(16)

校验和(16)

紧急指针(16)

选项

源端口号:发送方进程的端口号。

目标端口号:接收端进程的端口号。接收端收到数据段后,根据这个端口号来确定把数据送给哪个应用程序的进程。

序号:发送端为每个字节进行编号,便于接收端正确重组。

当TCP从进程接收数据字节时,把他们分片成数据段存储在发送缓存中,并对每一个字节进行编号。当数据到达目的地后,接收端会按照这个序号把数据重新排列,保证数据的正确性。

确认号:对发送端的确认信息。

接受端响应消息是将会用它来告诉发送端这个序号之前的数据段已经收到,如确认好是x,就是标识x-1个数据段都已经收到。

首部长度:用它可以确定TCP首部数据结构的字节长度。一般情况下TCP首部时20字节,但首部长度最大可以扩展为60字节。

控制位:

URG:紧急位。紧急指针有效位。

ACK:确认位。只有当ACK=1时,确认序列号字段才有效;当ACK=0时,确认号字段无效。

PSH:急迫位。标志位为1时,要求接收方尽快将数据段送达应用层。

RST:重置位。当RST值位1时,通知重新建立TCP连接。

SYN:同步(连接)位。同步序号位,TCP需要建立连接时将这个值设为1。

FIN:断开位。当TCP完成数据传输需要断开连接时,提出断开连接的乙方将这个值设为1。

窗口大小:说明本地可接受数据段的数目。这个值的大小时可变的,当网络通畅时接收端响应消息会将这个窗口值变大以加快传输速度,当网络不稳定时减小这个值可保证网络数据的可靠传输,TCP中的流量控制机制就是依靠变化窗口的大小实现的。

校验和:用来做差错控制。字段检验的范围包括首部和数据这俩部分。数据段在发送时和到达目的地时会进行校验和计算,若这俩次的校验和一致,则说明数据基本是正确的,否则将认为该数据已被破坏,接收端将丢弃该数据。

紧急指针:和URC配合使用,当URC=1时有效。

选项:在TCP首部可以有多达40字节的可选信息。例如,最大报文段长度MSS(Maximum Segment Size)。MSS告诉对方TCP:“我的缓存所能接受的报文段的数据字段的最大长度时MSS个字节。”

3.TCP三次握手

TCP建立连接的过程称位三次握手

?

TCP时面向连接的,就是说每次发送数据之前都要和对方建立一条可靠的连接,这个建立连接的过程分为三个步骤,就叫做三次握手

当服务端向服务端发送请求连接的报文时:

Seq序列号=x(x为随机)

SYN=1(标识发送连接请求)

服务端收到客户端发来的请求报文后,同意建立连接,则向客户端发送确认报文:

Seq序列号=y(这时服务器也会产生一个序列号Y,和客户端的序号不相关)

ACK确认号=x+1(Seq序列号x+1,标识确认收到了客户端的请求)

ACK=1(表示这是条确认请求)

SYN=1(同时也发送一个建立连接的请求)

客户端进程收到服务端进程的确认后,还要向服务端给出确认,然后链接成功建立:

Seq序列号=x+1(这时客户端的序列号为1)

ACK确认=Y+1(表示确认收到了服务器的连续请求)

ACK=1(表示这是确认报文)

4.TCP四次挥手

?

客户端向服务器发送断开连接的报文时:

FIN=1(表示发送断开请求)

ACK=1(表示这是条确认请求)

服务器收到客户端发来的请求报文后,同意断开连接:

ACK=1(表示确认收到了客户端的断开请求)

服务器向客户端发送断开连接请求:

FIN=1(表示服务器也向客户端发送断开请求,同意断开)

ACK=1(表示这是条确认请求)

客户端收到服务器的请求报文后,同意断开连接,然后断开成功:

ACK=1(确认同意断开)

5.UDP协议介绍

UDP协议是无连接、不保证可靠性的传输层协议。发送端不关心发送的数据是否到达目标主机、数据是否出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。传输数据速度更快,效率更快。

6.常见协议及端口

常见的TCP端口号及其功能

端口

协议

说明

21(20)

FTP

FTP服务器所开放的控制端口

23

TELNET

用于远程登录,可以远程控制管理目标计算机

25

SMTP

SMTP服务开放的端口,用于发送邮件

80

HTTP

超文本传输(HTTPS ?443 ?二次加密)

110

POP3

用于邮件的接收

53

DNS

建立连接(UDP 用来解析)

常用的UDP端口号及其功能

端口

协议

说明

69

TFTP

简单文件传输协议

111

RPC

远程过程调用

123

NTP

网络事件协议

161

SNMP

关于简单网络管理的协议

7.总结

TCP的含义

TCP报文结构及含义

TCP建立连接三次握手的过程

TCP断开连接四次挥手的过程

UDP的含义

常见协议的端口及作用

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 17:07:55  更:2021-12-02 17:09:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/6 6:58:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码