TCP特性 这是TCP / IP协议的基本特征 支持灵活的架构 向网络添加更多系统很容易。 在TCP / IP中,网络将保持完整,直到源计算机和目标计算机正常运行为止。 TCP是一种面向连接的协议。...TCP / IP遵循水平方法。 OSI模型使用两个单独的物理和数据链接层来定义底层的功能。 TCP / IP仅使用一层(链接)。 OSI层有七个层。 TCP / IP具有四层。...最常见的TCP / IP协议 一些广泛使用的最常见的TCP / IP协议是: TCP: 传输控制协议是一种Internet协议套件,可将消息分解为TCP段,并在接收方重新组装它们。...TCP / IP的缺点 这是使用TCP / IP模型的一些弊端: TCP / IP是设置和管理的复杂模型。 TCP / IP的浅层/开销高于IPX(Internet分组交换)。...TCP / IP模型的最大好处是,它可以帮助您在不同类型的计算机之间建立/建立连接。 TCP / IP是设置和管理的复杂模型。
参考自:TCP-IP详解卷1 链路层:有时也被称为数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,一起处理与电缆(或者其他任何传输媒介)的物理接口细节。...在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议) 运输层主要为两台主机上应用程序提供端到端的通信...在TCP/IP协议族中,有两个互不相同的传输协议,TCP(传输控制协议)和UDP(用户数据包协议)。 应用层负责处理特定的应用程序熙街。...由于TCP、UDP、ICMP和IGMP都要向IP传送数据,因此IP必须在生成的IP首部中加入某种表示,以表明数据属于哪一层。为此,IP在首部中存入一个长度为8bit的数值,称作协议域。...任何TCP/IP实现所提供的服务都用知名的1-1023之间的端口号。
参考:TCP-IP详解卷1:协议 IP首部: ? 服务类型TOS字段包括一个3bit的优先权子字段(现在已经被忽略),4bit的TOS子字段和1bit未用位但必须置0。...由于TCP把用户数据分成若干片,因此一般来说不会影响TCP,UDP一般会限制用户数据报长度为512字节,小于576字节,事实上大多数的实现(特别是那些支持网络文件系统NFS的实现)都允许超过8192字节的...首部检验和字段是根据IP首部计算的检验和码,不对首部后面的数据进行计算,ICMP、IGMP、UDP和TCP在他们各自的首部中均含有同时覆盖首部和数据检验和码。...在一般的体制中,IP可以从TCP、UDP、ICMP和IGMP中接收数据报,即在本地生成的数据报,并进行发送,或者从一个网络接口接收数据报(待转发数据报)并进行发送。IP层在内存中有一个路由表。...当数据包来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或者IP广播地址。如果确实是这样,数据报就被送到由IP首部协议字段所指定的协议模块进行处理。
TCP/IP含义 从字面意义上讲,有人可能会认为TCP/IP是指TCP与IP两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用IP进行通信时所必须用到的协议群的统称。...具体来说,IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等都属于TCP/IP的协议。它们与TCP或IP的关系紧密,是互联网必不可少的组成部分。...TCP/IP一词泛指这些协议,因此,有时也称TCP/IP为网际协议族(Internet Protocol Suite)。 ?...互联网进行通信时,需要相应的网络协议,TCP/IP原本就是为使用互联网而开发制定的协议族。因此,互联网的协议就是TCP/IP,TCP/IP就是互联网的协议。 TCP/IP协议分层模型 ?...随后将附加了TCP首部的包再发送给IP。 IP模块的处理 IP将TCP传过来的TCP首部和TCP数据合起来当做自己的数据,并在TCP首部的前端在加上自己的IP首部。
参考:TCP-IP详解卷1:协议 Ping程序的目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。...大多数的TCP/IP实现都在内核中直接支持Ping服务器,这种服务器不是一个用户进程。 ICMP回显请求和回显应答报文: ? 对于其他类型的ICMP查询报文,服务器必须响应标识符合序列号字段。...使得ping程序在发送出去的IP数据报中设置IPRR选项(该IP数据报包含ICMP回显请求报文)。这样每个处理该数据报的路由器都把它的IP地址放入选项字段中。...幸运的是,大多数系统都支持这些选项功能,只是有一些系统不把ICMP请求中的IP清单复制到ICMP应答中。 但是,最大的问题是IP首部中只有有限的空间来存放IP地址。...由于IP首部固定长度为20字节,RR选项用去3个字节,这样只剩下37个字节来存放IP低脂清淡,也就是说只能存放9个IP地址。 IP数据报中的RR选项的一般格式: ?
参考:TCP-IP详解卷1:协议 ARP(地址解析协议)和RARP(逆地址解析协议) ARP为IP地址到对应的硬件地址之间提供动态映射,这个过程是自动完成的,一般应用程序用户或者系统管理员不必关心...TCP/IP有自己的地址:32bit的IP地址。知道主机的IP地址并不能让内核发送一帧数据给主机,内核必须知道目的端的硬件地址才能发送数据。...ARP的功能是在32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。 点对点链路不使用ARP,当设置这些链路时(一般在引导过程进行),必须告知内核链路每一端的IP地址。...它的值为0x0800即表示IP地址。它的值与包含IP数据报的以太网数据帧中的类型字段的值相同。 接下来两个1字节的字段,硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。...发送来重复的IP地址。可以警告管理员,某个系统有不正确的设置。
参考:TCP-IP详解卷1:协议 链路层的三个主要目的: (1)为IP模块发送和接收IP数据报 (2)为ARP模块发送ARP请求和接收ARP应答 (3)为RARP发送RARP请求和接收RARP应答...是当今TCP/IP采用的主要的局域网技术。...在TCP/IP中,以太网数据报的封装是在RFC 894中定义的,IEEE 802网络的IP数据报封装是在RFC1042中定义的,主机要求每台Internet主机都与一个10Mb/s的以太网电缆相连接:...压缩的SLIP 通信经常是交互式的,在SLIP上有许多小的TCP分组进行交换。为了传送一个字节的数据需要20个字节的IP首部和20个字节的TCP首部,总数超过40个字节。...类似,对TCP和IP报文首部进行压缩 (5)链路控制协议可以对多个数据链路选项进行设置。
上回说到 UDP 协议, 与之对应的便是 TCP 协议 TCP协议 TCP协议全称: 传输控制协议, 顾名思义, 就是要对数据的传输进行一定的控制....此处的校验和不光包含TCP首部, 也包含TCP数据部分. 16位紧急指针: 用来标识哪部分数据是紧急数据....解决方法: – 使用setsockopt()设置socket描述符的选项SO_REUSEADDR为1, 表示允许创建端口号相同但IP地址不同的多个socket描述符....TCP 小结 为什么TCP这么复杂? 因为既要保证可靠性, 同时又要尽可能提高性能....TCP是可靠连接, 那么是不是TCP一定就优于UDP呢?
上一节大致了解TCP/IP协议栈是个啥东西,依旧是雾里看花的状态,有很多时候学一门新知识时,开头总是很急躁,无从下手,刚学会一点儿,却发现连点皮毛都不算,成就感太低,所以任何时候学习最重要的是要在合适的时间掌握应该掌握的知识...先简单回顾一下,TCP/IP协议栈: 数据链路层->网络层->传输层->应用层 如果为每一层加上一个ID,就像每个人都有身份证那样,那么可以这样标记: 数据链路层(MAC地址) 网络层(IPV4地址,...和我们生活关系最密切的IP地址: 作为网络层的标识,IP地址这个概念可以说大家肯定都有耳闻,IP地址是一个32位的二进制数,32位是个什么概念呢?...IP地址。...说完IP地址的表示方式,我们再说一下IP地址的分类,IP地址通常分为5类: A类地址 (1.0.0.0—127.255.255.255) B类地址 (128.0.0.0—191.255.255.255
为了改善这种缺点,大牛弄出了TCP/IP协议。现在几乎所有的操作系统都实现了TCP/IP协议栈。 TCP/IP协议栈主要分为四层:应用层、传输层、网络层、数据链路层,每层都有相应的协议,如下图 ?...在这里只对IP、TCP、UDP协议头做一个分析。 首先来看看在网络中,一帧以太网数据包的格式: ?...(9)TCP选项 是可选的,在后面抓包的时候,我们在看看它 2.重点详解 (1)三次握手建立连接 a.请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN,在这个例子中为...MSS = MTU - IP头 - TCP头,MTU表示最大传输单元,我们在IP头分析的时候会讲到,它一般为1500个字节。IP头和TCP 头部带可选选项的时候都是20个字节。...我们在说TCP的时候,说到MSS很多人不能区分它们。通过下面的图,我想就可以完全区分它们了。 ? 个人觉的如果通过TCP协议传输数据,到IP层的时候,可定不需要分片了。
两台计算机通过TCP/IP协议通讯的过程如下所示 ?...假如是IP数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP,然后交给相应的协议处理。...虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、IGMP与IP同属于网络层,TCP和UDP属于传输层。...下面看TCP协议如何用面向连接的服务来代替应用程序解决传输的可靠性问题。 TCP协议 ? 和UDP协议一样也有源端口号和目的端口号,通讯的双方由IP地址和端口号标识。...4位首部长度和IP协议头类似,表示TCP协议头的长度,以4字节为单位,因此TCP协议头最长可以是4x15=60字节,如果没有选项字段,TCP协议头最短20字节。
参考:TCP-IP详解卷1:协议 RARP RARP分组的格式与ARP分组基本一致,它们之间的主要差别是RARP请求或应答的帧类型为0x8035,RARP请求的操作码为3,应答操作码为4。...ICMP Internet控制报文协议 ICMP经常被认为是IP层的一个组成部分。传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。...当发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前8个字节。...这样,接收ICMP差错报文的模块就会把它与某个特定协议(根据IP数据报首部中的协议字段来判断)和用户进程(根据包含在IP数据报前8个字节中的TCP或UDP报文首部中的TCP或UDP端口号来判断)联系起来...ICMP的一个规则是,ICMP差错报文,必须包括生产该差错报文的数据报IP首部(包含任何选项),还必须至少包括跟在该IP首部后面的前8个字节。
通过之前的网络层基础知识,IP地址以及路由器的简介,大家应该对于TCP/IP有一个大致的了解,在脑海里应该对于网络的几个基础概念有个大概的了解,简单点说整个协议栈就是在做一件事,规定网络报文(网络传输中的数据报...协议 传输层——TCP/UDP协议 应用层——HTTP协议 上面的几种协议,如果都能熟练掌握,那基本上就是入门并且偏上的水平了,所以接下来我们就逐一介绍各个协议。...8位协议:代表着这份IP报文承载着何种上层传输协议或者网络协议,常见的取值与对应关系如下: ICMP协议 IGMP协议 TCP协议 UDP协议 IGRP协议 16位首部校验和:用于检验收到的报文是否有差错...第四段: 32位源IP地址:发送方IP地址 第五段: 32位目的IP地址:接收方IP地址 介绍完IP报文的格式以后,我们再来说一下IP报文的特点,其主要特点有以下几点: IP报文具有不可靠性,即不能发送方发送报文后...IP报文的不保序性,既然IP报文是不靠靠的,那相应的,它也不保证发送出的报文的顺序性,也许发包顺序是1、2、3,但是收包顺序可能就是3、2、1 IP报文的分片,若发送报文数据过大,则涉及到报文分片。
概述 ip addr命令的作用是在Linux系统上查询ip地址。 这个系统上的两个接口: 环回(lo)和网络(eth0)。
TCP 协议详解 在笔者以前的工程中,用过 socket 套接字实现过多进程通信的程序,也用过 Node.js + socket.io + express 构建过 B/S 软件架构,但对最基础的 TCP...参考网址: 《TCP 协议详解》 《简析TCP的三次握手与四次分手》 《TCP协议中的三次握手和四次挥手(图解)》 《TCP通信的三次握手和四次撒手的详细流程(顿悟) 》 《TCP建立连接的三次握手...IP 数据报并通过网络发送数据报,或者从网络上接收物理帧,抽出 IP 数据报,交给 IP 层; 三、TCP 的可靠连接 TCP 用于应用程序之间的可靠通信。...三次握手详解 TCP 是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在 TCP / IP 协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的。...七、TCP 的四次分手 1. 四次分手详解 在客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定总要断开 TCP 连接。那对于 TCP 的断开连接,这里就有了对应的“四次分手”。
TCP 的许多特性都与 TCP 是面向连接的这个基本特性有关 TCP 连接的端点叫做套接字(socket)或插口,根据 RFC 793 的定义:端口号拼接到(concatenated with) IP...地址即构成了套接字 套接字 socket = (IP 地址:端口号) 每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定 TCP 连接 ::= {socket1,...socket2} = {(IP1: port1), (IP2: port2)} TCP 连接就是由协议软件所提供的一种抽象...TCP 连接的端口是个很抽象的套接字,即( IP地址: 端口号)。...另一种细线箭头表示异常变迁 [TCP协议-图19] 《TCP协议详解》原文链接:https://blog.maplemark.cn/2019/04/tcp%E5%8D%8F%E8%AE%AE%E8%AF
概述 TCP(Transmission Control Protocol)传输控制协议 和UDP结构类似,由TCP首部和TCP数据报数据组成: 特点: TCP是面向连接的协议 TCP的一个连接有两端...TCP提供可靠的传输服务 TCP提供全双工的通信 TCP是面向字节流的协议(对应用层数据报合并或分拆) TCP协议头部,固定20个字节,UDP头部只有8个字节,IP协议头部20个字节: 序号: 0~...确认号为N:表示N-1序号的数据都已经收到 比如,收到了序号为501的数据报,长度是100,下一次确认号则为601 数据偏移: 占4位:0~15,单位为:32位字(由此可以看出最大偏移为15*4,即TCP...首部长度介于20-60个字节之间) 数据偏离首部的距离 不知道TCP选项有多长,所以用数据偏移表示真实的数据离头部偏移有多少 TCP标记: 占6位,每位各有不同意义 URG、ACK、PSH、RST、SYN...如收到了5的确认消息,则认为1-5的消息都已经收到了,就把滑动窗口往前移动5格: TCP协议的可靠传输 1. TCP的可靠传输基于连续ARQ协议 2.
最后,因为TCP报文段最终是以IP数据报发送的,而IP数据报到达接收端可能乱序、重复,所以TCP协议还会对接收到的TCP报文段重排、整理,再交付给应用层。.UDP协议则和IP协议一样,提供不可靠服务。...TCP模块通常将MSS设置为(MTU-40) 字节(减掉的这40字节包括20字节的TCP头部和20字节的IP头部)。...这样携带TCP报文段的IP数据报的长度就不会超过MTU (假设TCP头部和IP头部都不包含选项字段,并且这也是一般情况),从而避免本机发生IP分片。...反过来思考,如果不存在TIME_ WAIT状态,则应用程序能够立即建立-一个和刚关闭的连接相似的连接(这里说的相似,是指它们具有相同的IP地址和端口号)。...前者指定在底层IP接管之前TCP最少执行的重传次数,默认值是3。后者指定连接放弃前TCP最多可以执行的重传次数,默认值是15(一般对应13 ~ 30 min)。
额外地,数据包上还会附加上主机 A 本身的 IP 地址,有了这些信息主机 B 才可以回复信息给主机 A。这些附加的信息会被装进一个叫 IP 头的数据结构里。...IP 头是 IP 数据包开头的信息,包含 IP 版本、源 IP 地址、目标 IP 地址、生存时间等信息。 简化的 UDP 网络三层传输模型 ?...相对于 UDP,TCP 有下面两个特点: 对于数据包丢失的情况,TCP 提供重传机制; TCP 引入了数据包排序机制,用来保证把乱序的数据包组合成一个完整的文件。...简化的 TCP 网络四层传输模型 下面我们再看下完整的 TCP 连接过程,通过这个过程你可以明白 TCP 是如何保证重传机制和数据包的排序功能的。 一个TCP连接的生命周期 ?...本文链接:https://zhangbing.site/2019/08/19/IP-UDP-TCP/。
TCP是靠谱的协议,但不代表它所处的网络环境很好。 IP层来看,如果网络状况的确差,无任何可靠性保证,即使是IP的上一层TCP也无能为力,能做的只是更努力,不断重传,通过各种算法尽量保证。...即对于TCP,IP层你丢不丢包,我管不着,但在我TCP层,会尽力保证可靠性。...稍稍计算一下,若重复,需4h+,那个绕路的包也早就没了,因为IP包头里有个TTL,生存时间。 最后双方终于成功建立了连接。...TCP协议里面并没有对这个状态的处理,但Linux有,可以调整tcp_fin_timeout参数,设置一个超时时间。...因为TCP报文基于是IP协议的,而IP头中有一个TTL域,是IP数据报可以经过的最大路由数,每经过一个处理他的路由器此值就减1,当此值为0则数据报将被丢弃,同时发送ICMP报文通知源主机。
领取专属 10元无门槛券
手把手带您无忧上云