首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux网络】TCP协议

引言 TCP协议是传输层中非常重要的协议。本篇博客我们将从TCP头部信息、TCP状态转移、TCP数据流、TCP数据流的控制等等方面来讨论! 在TCP协议中,通信双方的地位是平等的。...1、TCP协议的特点 传输层中我们常用的协议有两个:TCP协议和UDP协议TCP协议相对于UDP协议的特点是:面向连接、可靠的、面向字节流的。...在讲它们的区别之前,我们需要了解一下TCP协议全双工的特点 TCP协议属于传输层中的协议,传输层由操作系统管理。...这一切由操作系统和TCP协议决定,用户层只是给出建议。所以TCP协议又被称为传输控制协议。 由于双方可以同时向对方发送数据,所以这种通信模式被称为全双工。...Linux中(BSD Unix和Windows也是如此), 超时以500ms为一个单位进行控制, 每次判定超时重发的超时 时间都是500ms的整数倍.

8510

浅谈TCP IP协议(四)IP协议解析

通过之前的网络层基础知识,IP地址以及路由器的简介,大家应该对于TCP/IP有一个大致的了解,在脑海里应该对于网络的几个基础概念有个大概的了解,简单点说整个协议就是在做一件事,规定网络报文(网络传输中的数据报...)的发送和接收,而整个协议内的协议,也是可以分为之前介绍过的链路层-》网络层-》传输层-》应用层,在这每一层中都有很多不同的协议,但是最常用的协议,每一层就是一到两种,所以想学协议,先从每一层最常见,...最常用的开始学起: 链路层——以太网、VLAN 网络层——IP协议 传输层——TCP/UDP协议 应用层——HTTP协议 上面的几种协议,如果都能熟练掌握,那基本上就是入门并且偏上的水平了,所以接下来我们就逐一介绍各个协议...协议 4位首部长度:单位是4字节,一般取值为5 8位ToS字段:这个字段比较特殊,它相当于是报文的优先级或者是报文的服务类型,用来区分报文的业务类型,对于设备做QoS有着重大的意义。...8位协议:代表着这份IP报文承载着何种上层传输协议或者网络协议,常见的取值与对应关系如下: ICMP协议 IGMP协议 TCP协议 UDP协议 IGRP协议 16位首部校验和:用于检验收到的报文是否有差错

1.4K40
您找到你想要的搜索结果了吗?
是的
没有找到

浅谈TCP IP协议(二)IP地址

上一节大致了解TCP/IP协议是个啥东西,依旧是雾里看花的状态,有很多时候学一门新知识时,开头总是很急躁,无从下手,刚学会一点儿,却发现连点皮毛都不算,成就感太低,所以任何时候学习最重要的是要在合适的时间掌握应该掌握的知识...先简单回顾一下,TCP/IP协议: 数据链路层->网络层->传输层->应用层 如果为每一层加上一个ID,就像每个人都有身份证那样,那么可以这样标记: 数据链路层(MAC地址) 网络层(IPV4地址,...以下简称IP地址) 传输层、应用层(端口) 这样的标签并不能完全概括这一层所有特征,但是如果掌握这些标示,就相当于是一把钥匙,可以让你快速打开这一层协议的“大门”。

1.1K10

浅谈TCP IP协议(一)入门知识

/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP.../IP协议内,这些协议有什么关系呢,大家应该都知道是一种先进后出的数据结构,那这和TCP/IP协议有什么关系呢?...我们先将HTTP报文压入一个中(就好像是在分装报文),然后是IP,不对,我们貌似漏了一个传输层啊,别急别介,HTTP报文在传输层用的是TCP协议,好,我们把TCP压入中,再讲IP层也压入中,至于链路层的话...,就用最常见的以太网就OK了,好了,现在我们的里面从头至尾依次是以太帧头-IP协议-TCP协议-HTTP协议,然后我们先忽略最底层的物理层,假设这个封装好的一样的报文漂洋过海,来到了它的目的地(至于怎么过来的...因为这个报文是我们构造的一个,所以说它的顺序肯定也是,因此拿取的顺序就是以太帧头-IP协议-TCP协议-HTTP协议,发现没,最先被封装入的HTTP报文是最后才被拿出来的,这中间的细节如果能全部掌握

65320

Linux Tcp 内核协议学习三种武器 之 Packet Drill

Linux阅码场原创文章 Linux TCP 内核协议是一个非常复杂的实现, 不但沉淀了过去20多年的设计与实现,同时还在不停的更新。相关的RFC与优化工作一直还在进行中。...如何研究和学习Linux TCP内核协议这样一块硬骨头就成了一大难题。 当然最重要也是最基本的还是要阅读相关的RFC和内核中的代码实现。这个是最最基本的要求。...想要驯服TCP 内核协议这样的monster 仅仅浏览和静态分析代码是完全不够的。...Google 在2013 年发布了TCP 内核协议 测试工具 Packet Drill。这个工具是名副其实,大大的简化了学习和测试TCP 内核协议的难度。...内核协议来通信, 并对接收到的来自目标系统TCP 内核协议 的报文进行校验,来确定是否通过测试。

1.8K30

浅谈TCP IP协议(三)路由器简介

读完这个系列的第一篇浅谈TCP/IP协议(一)入门知识和第二篇浅谈TCP/IP协议(二)IP地址,在第一篇中,可能我对协议中这个的解释有问题,在数据结构中是一种先进后出的常见结构,而在整个TCP.../IP协议中,在封装报文时就相当于是压操作,而在报文解析过程中,则是一个出的过程,在封装是最先被压进中的应用层协议,在解析报文时,也是最后从中读取出来并解析的。...好了,言归正传,我们先看一下路由器的主要功能是什么: 路由器的主要功能是路由选择和报文转发,这种功能的实现需用到路由协议。...路由协议是路由器之间维护路由表的规则,用于发现路由,并生成相应的路由表,同时知道报文的转发。路由协议决定路由表中存放那些路由信息。 简单点说,路由器的功能就是两点:路由,转发。

51030

Linux 内核的网络协议

前言 本文主要记录 Linux 内核网络协议的运行原理 数据报文的封装与分用 封装:当应用程序用 TCP 协议传送数据时,数据首先进入内核网络协议中,然后逐一通过 TCP/IP 协议族的每层直到被当作一串比特流送入网络...对于每一层而言,对收到的数据都会封装相应的协议首部信息(有时还会增加尾部信息)。TCP 协议传给 IP 协议的数据单元称作 TCP 报文段,或简称 TCP 段(TCP segment)。...Linux 内核网络协议 协议的全景图 协议的分层结构 逻辑抽象层级: 物理层:主要提供各种连接的物理设备,如各种网卡,串口卡等。...网络协议初始化流程 这需要从内核启动流程说起。...具体设备的发送函数在协议初始化的时候已经设置了。

2.9K50

网络通信的神奇之旅:解密Linux TCP网络协议的工作原理

一、TCP网络开发API TCP,全称传输控制协议(Transmission Control Protocol),是一种面向连接的、可靠的、基于字节流的传输层通信协议。...(8)int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen) 准备一个SYN包,交给协议发送出去,等待三次握手完成后才返回...2.1.1、TCP的三次握手 示意图: 三次握手在kernel协议中进行,那么三次握手是在哪几个函数中发送的呢?...半连接队列和全连接队列: 在三次握手中,Linux kener 协议会维护两个队列:半连接队列和全连接队列。...因为send()函数仅仅只是将数据拷贝到协议的写缓冲区,由协议发送;发送过程中会经过N个网关,可能存在丢包或链路断开导致未能发送到目的地。如果要知道数据是否发送成功,需要加上确认机制(ACK)。

11710

Linux】传输层协议:UDP和TCP

在网络通信中,通信的本质实际就是两台主机上的进程在网络环境中进行通信,也就是数据的传输,而我们总说TCP/IP协议,这两个协议分别解决了两个重要的问题,即一台主机如何在网络环境中标定自己的唯一性,一台主机中的某个进程如何在主机内部标定自己的唯一性...应用层就可以作别的事情了,至于数据什么时候穿过网络协议进行发送,发送过程中数据丢失怎么办?...1.2 网络协议linux系统的联系(以port为键值的开散列哈希表,哈希桶存储port对应的PCB的地址) 1....前期我们在说端口号的时候,我们说传输层通过协议报头中的16位目的端口号,将数据交付给使用应用层协议的特定进程,我们这么理解确实没问题,但理解到这个程度还是不够深刻,我们需要将这个过程细化,将网络协议和...Linux内核协议其实为管理一个TCP连接,使用了两个队列,一个是半连接队列,一个是全连接队列,当全连接队列满了的时候,服务器无法再继续受理新到来的连接,只会维持一小段时间的半连接。

78030

uIP协议分析_协议

转载地址:http://blog.sina.com.cn/s/blog_abd39cc70101fj1f.html uIP特性 uIP协议往掉了完整的TCP/IP中不常用的功能,简化了通讯流程,但保存了网络通讯必须使用的协议...,设计重点放在了IP/TCP/ICMP/UDP/ARP这些网络层和传输层协议上,保证了其代码的通用性和结构的稳定性。...uIP协议与系统底层和高层应用之间的关系如图2-1所示。 从上图可以看出,uIP协议主要提供了三个函数供系统底层调用。...4.由于uIP协议需要使用时钟,为TCP和ARP的定时器服务。因此使用单片机的定时器0用作时钟,每20ms让计数TIck_cnt加1,这样,25次计数(0.5S)满了后可以调用TCP的定时处理程序。...uIP协议为C语言编写,编译过程中的题目比较少,并且轻易解决。 uIP的主控制循环 通过实际的代码说明uIP协议的主控制循环。

88720

TCP协议

1、TCP协议的特点 TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重复的问题。...TCPTCP/IP体系中非常复杂的一个协议,主要特点有: 1)TCP是面向连接的传输层协议。 2)每一条TCP连接有两个端点,每一条TCP连接只能是点对点的(一对一)。...3)TCP提供可靠的交付服务,保证传输的数据无差错,不丢失,不重复且有序。 4)TCP提供全双工通信。...5)TCP是面向字节流的,虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。 2、TCP连接管理 TCP是面向连接的协议。...TCP把连接作为最基本的抽象,每一条TCP连接有两个端点,TCP连接的端点不是主机,不是主机的IP地址,不是应用程序,也不是传输层的协议端口。TCP连接的端口叫做套接字(socket)或插口。

77910

TCP协议

什么是TCP协议 TCP(transmission control protocol)协议全称传输控制协议。它是TCP/IP协议簇中一个非常重要的协议,它工作在IP协议层之上,应用层下面。...TCP服务的特点(为什么需要TCP协议) •使用TCP进行通信,在传输数据前需要建立连接,连接建立成功之后才能输出数据。建立连接的两端分配内核资源,像端口号,socket描述符。...TCP协议报文结构 •端口号,分为源端口号和目的端口号,分别占用16bit。源端口号标识报文发送方端口地址,目的端口号标识报文接收方端口地址。...,通信双方使用该字段选项协商最大报文段长度MSS(max segment size),在TCP协议中将MSS设置为(MTU-40)个字节。...5)kind=4是选择确认选项,如果某个TCP报文段丢失,则TCP模块会重传最后被确认的TCP报文段后续的所有报文段,这样之前已正确传输的TCP报文段也可能重复发送,降低了TCP性能。

1K11

TCP 协议

TCP是一种面向连接、可靠的传输方式。 超时重传 TCP层每发送一个数据包,都要设置一个定时器,如果接收方在有效时间内没有返回数据接收的确认ACK,发送方则重新发送这个数据包。...TCP三次握手 主机A向主机B发送连接请求 主机B向主机发送ACK确认 主机A建立连接,向主机B发送ACK确认;主机B收到ACK确认,建立连接 为什么要三次握手?...TCP四次挥手 主机A在发送完数据后,向主机B发送关闭连接的请求FIN,之后处于半关闭状态,不再发送任何数据,但可以接收数据 主机B在接收完数据后,处理关闭连接的请求,返回FIN同意关闭。...TCP四次挥手主要是为了保证连接关闭前的数据能够稳定地进行传输。 为什么要四次挥手?

50420

TCP协议

1、TCP协议的特点 TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重复的问题。...TCPTCP/IP体系中非常复杂的一个协议,主要特点有: 1)TCP是面向连接的传输层协议。 2)每一条TCP连接有两个端点,每一条TCP连接只能是点对点的(一对一)。...3)TCP提供可靠的交付服务,保证传输的数据无差错,不丢失,不重复且有序。 4)TCP提供全双工通信。...5)TCP是面向字节流的,虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。 2、TCP连接管理 TCP是面向连接的协议。...TCP把连接作为最基本的抽象,每一条TCP连接有两个端点,TCP连接的端点不是主机,不是主机的IP地址,不是应用程序,也不是传输层的协议端口。TCP连接的端口叫做套接字(socket)或插口。

53710

ZigBee协议(一)–协议介绍

大家好,又见面了,我是你们的朋友全君。 1、Zigbee协议简介   协议是一系列的通信标准,通信双方需要按照这一标准进行正常的数据发射和接收。...协议协议的具体实现形式,通俗讲协议就是协议和用户之间的一个接口,开发人员通过使用协议来使用这个协议,进而实现无线数据收发。   ...图1 ZigBee无线网络协议层的架构图 2、如何理解Zigbee协议   协议协议的实现,可以理解为代码,库函数,供上层应用调用,协议较底下的层与应用是相互独立的。...每个厂家的协议是有区别的,比如TI的BLE协议和nordic的BLE协议就有很大的不同(多说一点,TI的BLE协议更像是安卓的BLE结构,所以会安卓蓝牙的人可能能看懂TI的代码)。...下面是协议无线发送函数:   如果想更好的应用协议就需要对协议提供的这些函数及其参数的具体作用和意义进行细致的了解,这个在接下来中会详细介绍。

2.9K20

TCP协议和UDP协议

大家好,又见面了,我是你们的朋友全君。...传输控制协议TCP 1.1TCP的主要特点: 1.1.1面向连接的运输层协议 (1)TCP的连接 TCP的许多特性都与TCP是面向连接的这个基本特性有关,因此要对TCP的连接有更清楚的了解。...操作系统根据接收的IP数据包的首部内的8位协议来判断这是什么报文,从而直接交给相关的内核进程或者协议处理。 追问:一个端口是否可以绑定多个端口号? 可以。...Linux会给每个socket分配一个唯一的文件描述符,通过这个文件描述符来区分对应的套接字。 追问:一个端口号是否可以被多个进程绑定? 不可以。...发布者:全程序员长,转载请注明出处:https://javaforall.cn/133847.html原文链接:https://javaforall.cn

1.2K20

如何学习 Linux 内核网络协议

协议的细节 下面将介绍一些内核网络协议中常常涉及到的概念。...如下图所示,每个网卡都有两端,一端是协议 (IP、TCP、UDP),另一端则有所区别,对物理网卡来说,这一端是网卡生产厂商提供的设备驱动程序,而对虚拟网卡来说差别就大了,正是由于虚拟网卡的存在,内核才能支持各种隧道封装...而这里提到的 socket 和 sock 是内核中的两个数据结构,其中 socket 向上面向用户,而 sock 向下面向协议。 如下图所示,这两个结构实际上是一一对应的。...L3->L4 我们知道网络协议是分层的,但实际上,具体到实现,内核协议的分层只是逻辑上的,本质还是函数调用。...在内核网络子系统初始化时,L4 层协议 (如下面的 TCP 和 UDP) 会被注册: static struct net_protocol tcp_protocol = { ......

1.4K20

TCP协议概述

TCP 协议概述 1.TCP提供一种面向连接的、可靠的字节流服务。 2.两个应用程序通过TCP连接交换8bit字节构成的字节流。...4.一个IP地址和一个端口号也称为一个插口(socket),出现在最早的TCP规范(RFC793) TCP 保证可靠性: 1.应用数据被分割成 TCP 认为最适合发送的数据块 2.当 TCP 发出一个段后...,它启动一个定时器,等待目的端确认收到这个报文段,超时重发 3.当 TCP 收到发自 TCP 连接另一端的数据,它将发送一个确认 4.TCP 将保持它首部和数据的检验和 5.如果必要, TCP 将对收到的数据进行重新排序...6.TCP 还能提供流量控制 TCP是一个面向连接的协议。...因为任何设备在linux下都是文件,通信的接口也有专门的接口文件负责,所以linux下进程tcp链接的最大并发量也受限于该值

42420

TCP协议详解

TCP服务的特点 传输层协议主要有两个: TCP协议和UDP协议TCP协议相对于UDP协议的特点是:面向连接、字节流和可靠传输。 使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写。...TCP协议的这种连接是一对一的,所以基于广播和多播(目标是多个主机地址)的应用程序不能使用TCP服务。而无连接协议UDP则非常适合于广播和多播。...最后,因为TCP报文段最终是以IP数据报发送的,而IP数据报到达接收端可能乱序、重复,所以TCP协议还会对接收到的TCP报文段重排、整理,再交付给应用层。.UDP协议则和IP协议一样,提供不可靠服务。...Linux有两个重要的内核参数与TCP超时重传相关: /proc/sys/net/ipv4/tcp_retries1 和/proc/sys/net/ipv4/tcp_retries2。...Linux下有多种实现,比如reno算法、vegas 算法和cubic算法 等。

59610
领券