首页 > 其他分享 >TCP为什么可靠,采用了什么方法

TCP为什么可靠,采用了什么方法

时间:2023-04-16 10:08:14浏览次数:45  
标签:为什么 IP 报文 网络 TCP 可靠 保证 序列号


TCP为什么可靠,采用了什么方法_网络


首先对比IP层,IP层不可靠,不保证网络包的交付,不保证网络包的按序交付,也不保证网络包的数据完整性。

而TCP在传输层进行可靠的数据传输服务,接受到的网络包无损坏,无间隔,非冗余按序。

TCP无论网络链路出现了怎样的链路变化,TCP都可以保证一个报文一定能够到达接收端。

通过TCP连接保证可靠性,流量控制维护某些状态信息

信息组合也就是包括Socket,序列号和窗口大小称为连接。

Socket:IP地址+端口号

序列号:解决乱序问题

窗口大小:用来做流量控制

TCP四元组:

源地址和目的地址的字段(32 位)是在 IP 头部中,作用是通过 IP 协议发送报文给对方主机。

源端口和目的端口的字段(16 位)是在 TCP 头部中,作用是告诉 TCP 协议应该把报文发给哪个进程。


标签:为什么,IP,报文,网络,TCP,可靠,保证,序列号
From: https://blog.51cto.com/u_15911055/6193298

相关文章

  • TCP为什么要三次握手,而不是两次或四次?
    文章目录TCP为什么要三次握手,而不是两次或四次?三次握手才可以阻止重复历史连接的初始化(主要原因)同步双方初始序列号避免资源浪费小结TCP为什么要三次握手,而不是两次或四次?TCP连接时用于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括Socket,序列号和窗口大小称为连接。......
  • IP层会分片,为什么TCP层还需要MSS?
    MTU:一个网络包的最大长度,以太网一般为1500字节MSS:除去IP和TCP头部之后,一个网络包所能容纳的TCP数据的最大长度如果一个IP分片丢失,整个IP报文的所有分片都得重传。IP层进行分片传输没有效率:IP层没有超时重传机制,由传输层的TCP来负责超时和重传,当某个IP分片丢失后,接收方的IP层无法......
  • 为什么 SQLite 一定要用 C 语言来开发?
    SQLite是一种专门为在Unix和类Unix操作系统上运行的Linux服务器应用程序而设计的数据库管理系统,是一种轻量级的关系型数据库管理系统,它适用于许多嵌入式设备和物联网设备。它使用C语言编写,并且是一个开源项目。简单易用:SQLite的语法简单易懂,不需要专业的编程知识,因此适......
  • 为什么每次建立TCP连接时初始化的序列号都要求不一样
    为了防止历史报文被下一个相同的四元组的连接接受假设每次建立连接。客户端和服务端的初始化序列号都是从0开始的客户端和服务端建立了一个TCP连接,在客户端发送数据包被网络阻塞了然后超时重传了这个数据包,而此时服务端断电重启,之前与客户端建立的连接也消失了,于是收到客户端的数......
  • 一台主机可以有多少个端口?为什么会有端口号的限制呢?与哪些因素有关
    一台主机可以有多少个端口?TCP/IP协议中的服务端口通过不同的逻辑端口来区分不同的服务。一个IP地址的端口通过16bit进行编号,最多可以有65535个端口。为什么会有端口号的限制呢?端口号就是一种用于标识网络应用程序的方法。在TCP/IP协议中,每个应用程序都需要绑定一个端口号,这个端......
  • LYT-C#-Socket——简单的TCP服务端-客户端连接通信
    https://learn.microsoft.com/zh-cn/dotnet/api/system.net.sockets.tcplistener?view=netframework-4.8.1TCP编程的服务器端一般步骤是:1、创建一个socket,用函数socket()。2、设置socket属性。3、绑定本机的IP地址、端口等信息到socket上,用函数bind()。......
  • 为什么要code review
    1.简介本文将介绍CodeReview的相关内容,包含为什么要CodeReview,以及CodeReview主要review哪些部分的内容,之后讲述如何才能形成一套比较好的CodeReview规则和流程。后续讲述了Codereview中一些可以遵守的比较好的规则,最后讲述了如何才能让Codereview流程跑起来。本文为最......
  • Centos 服务器放行TCP、UDP端口教程
     在运行CentOS操作系统时,经常需要放行某个端口,以便应用程序能够正常运行。今天飞飞将和你分享centos服务器放行tcp、udp端口教程,希望可以帮助到您~ 首先用SSH连接工具连接服务器,如果你不知道如何连接Linux服务器,可以参考下这篇教程 比如我们在安装宝塔后面板无法访问,提......
  • 为什么要在函数的定义前加static?
    1.作用函数定义前加static的含义不是指存储方式,而是指对函数的作用域仅限于本文件2.用处使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。3.根本原因根本原因是C语言中同一个工程中不能有同名函数。......
  • socket与TCP的关系
    Socket是一种抽象封装,等价于应用程序和网络中间的一层,以便在应用程序和操作系统内核之间传输数据。TCP是一个可靠的、面向连接的协议,用于在计算机之间传输数据。Socket可以用于创建TCP连接,在应用程序间传输数据,它们是紧密相关的,其中Socket提供了创建、绑定、监听、接受、连接、发......