一、TCP的特点

  • 面向连接的、可靠的、基于字节流的传输层通信协议。
  • 将应用层的分割成报文段,并发送发给目标节点的TCP层。
  • 数据包都有序号,对方收到则发送ACK确认,未收到则重传。
  • 使用效验和来效验数据在传输过程中是否有误。

二、TCP报文信息

  报文头包含信息有:

  • 源端口、目的端口
  • 标示进程(socket):IP地址+协议+端口号

  TCP的flags标志:

  1. URC:urgent,紧急指针,为1时有效;
  2. ACK:确认序列号标志;
  3. PSH:push标志,数据不进入缓存区,直接交给应用程序;
  4. RST:重置连接标志;
  5. SYN:同步序列号,用于建立连接过程;
  6. FIN:finish标志,用于释放连接。

三、TCP的三次握手

流程图如下(自己画的呦~ 推荐工具:在线网址ProcessOn):

TCP三次握手流程图详细说明:

  1. 建立连接时,客户端发送SYN包(seq=x)到服务端,并进入SYN-SEND状态,等待服务器确认。
  2. 服务器收到SYN包,必须确认客户端的SYN(ack=x+1),同时,自己也发送一个SYN包(seq=y),即SYN+ACK包,此时,服务器进入SYN-RECV状态。
  3. 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户和服务器进入ESTABKISHED状态。开始数据传输。

四、TCP的四次挥手

TCP四次挥手流程图详细说明:

  1. client发送一个FIN后,用来关闭client到service的数据传输,client进入FIN-WAIT-1状态。
  2. service收到FIN后,发送一个ACK给client,确认序号为收到的seq+1(与SYN相同,一个FIN占用一个序号),service进入CLOSED-WAIT。
  3. service发送一个FIN,用来关闭service到client的数据传输,service进入LAST-ACK状态。
  4. client收到FIN后,client进入TIME-WAIT状态,接着发送一个ACK给service,确认序号为收到的序号+1。service进入CLOSED状态,完成四次挥手。

五、TCP的滑动窗口

作用:① 保证TCP的可靠性;

   ②保证TCP的流控制特性(数据顺序发送)。

六、UDP的特点

  • 面向非连接的
  • 不维护连接状态,支持同时想多个客户端传输相同的消息
  • 数据包报文头只有8个字节,额外开较少
  • 吞吐量只受限于数据生成速率、传输速率及机器性能
  • 尽最大努力交互,不保证可靠交付,不维持连接状态表
  • 面向报文,不对应用程序提交的报文进行拆分和合并

七、TCP和UDP的区别

  • 面向连接/无连接
  • 可靠/不可靠
  • 报文有序/无序
  • 速度
  • 量级

详解TCP与UDP的更多相关文章

  1. 详解TCP和UDP数据段的首部格式

    TCP数据段的首部格式: 源端口号(16) 目的端口号(16) 序列号(32) 确认应答号(32) 数据偏移(4) 保留(6) 代码位(6) 窗口(16) 校验和(16) 紧急指针 选项(长度可变) ...

  2. 第6章 传输层(详解TCP的三次握手与四次挥手)

    第6章 传输层 传输层简介 传输层为网络应用程序提供了一个接口,并且能够对网络传输提供了可选的错误检测.流量控制和验证功能.TCP/IP传输层包含很多有用的协议,能够提供数据在网络传输所需的必要寻址信 ...

  3. 详解TCP连接的“三次握手”与“四次挥手”(下)

    上文链接: 详解TCP连接的"三次握手"与"四次挥手"(上) 四.TCP的四次挥手(Four-Way Wavehand) 0.前言 对于"三次握手&q ...

  4. 详解TCP的三次握手四次断开

    本文将分别讲解经典的TCP协议建立连接(所谓的“3次握手”)和断开连接(所谓的“4次挥手”)的过程. 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务.TCP提 ...

  5. 详解TCP连接的“三次握手”与“四次挥手”(上)

    一.TCP connection 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西: 由于TCP不存在连接的概念,只存在请求和响应,请求和响应都是数据包,它 ...

  6. 详解TCP三握四挥

    TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确 ...

  7. OSI七层模型详解 TCP/IP协议

      总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...

  8. 详解 TCP的三次握手四次挥手

    本文转载来自https://blog.csdn.net/qzcsu/article/details/72861891 背景描述 通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之 ...

  9. TCP/IP详解之:UDP协议

    第11章 UDP协议  UDP首部 UDP的检验和是可选的,而TCP的检验和是必须的: UDP的检验和是端到端的检验和.由发送端计算,由接收端验证: 尽管UDP的检验和是可选的,但总是推荐被使用 IP ...

随机推荐

  1. Java开发人员必备十大工具

    Java世界中存在着很多工具,从著名的IDE(例如Eclipse,NetBeans和IntelliJ IDEA)到JVM profiling和监视工具(例如JConsole,VisualVM,Ecli ...

  2. .netcore 中使用开源的AOP框架 AspectCore

    AspectCore Project 介绍 什么是AspectCore Project ? AspectCore Project 是适用于Asp.Net Core 平台的轻量级 Aop(Aspect- ...

  3. ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/itsdangerous' Consider using the `--user` option or check the permissions

    近期练习flask写个blog, 安装flask扩展时 pip install Flask-WTF 报ERROR: Could not install packages due to an Envir ...

  4. Linuxautofs自动挂载服务

    autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统.将信息填入/etc/fstab文件后,系统在每次开机时都自动将其挂载,而autof ...

  5. Python3+Requests+Excel完整接口自动化框架

    框架整体使用Python3+Requests+Excel:包含对实时token的获取 框架结构图 1.------base -------runmethond.py runmethond:对不同的请求 ...

  6. property用法,使Python中的get方法和set方法使用更简单

    方法一: class a: def __init__(self): self.__num = 1              #定义一个私有变量(以双下划线开头的是私有变量) def getNum(se ...

  7. The 2019 Asia Nanchang First Round Online Programming Contest

    传送门 A. Enju With math problem 题意: 给出\(a_1,\cdots,a_{100}\),满足\(a_i\leq 1.5*10^8\). 现在问是否存在一个\(pos\), ...

  8. Linux下安装redis报错信息

    redis在Linux安装报错 标签: redislinuxcentos 2017-02-24 13:46 384人阅读 评论(0) 收藏 举报  分类: Linux安装工具(2)  版权声明:本文为 ...

  9. Java解析XML字符串,取出其中<aaaa><![CDATA[(XXX)]]></aaa>里面的XXX值,也可以使用xml解析的其他方式,这是最简单的字符串解析

    直接贴一段业务代码,这段代码是解析请求返回的xml格式字符串,为了取出其中的值便于下一步的使用. @RequestMapping(value="/search",produces ...

  10. C#开发BIMFACE系列15 服务端API之获取模型的View token

    系列目录     [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列3 服务端API之获取应用访问凭证AccessToken>中详细介绍了应用程序访问API的令牌凭证.我 ...