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

TCP IP模型:什么是TCP IP堆栈?协议层,优点

TCP特性 这是TCP / IP协议的基本特征 支持灵活的架构 向网络添加更多系统很容易。 在TCP / IP中,网络将保持完整,直到源计算机和目标计算机正常运行为止。 TCP是一种面向连接的协议。...互联网层 Internet层是TCP / IP模型的第二层。也称为网络层。该层的主要工作是从任何网络发送数据,无论它们采用何种路由,任何计算机都仍然可以到达目的地。...TCP / IP遵循水平方法。 OSI模型使用两个单独的物理和数据链接层来定义底层的功能。 TCP / IP仅使用一层(链接)。 OSI层有七个层。 TCP / IP具有四层。...TCP / IP的缺点 这是使用TCP / IP模型的一些弊端: TCP / IP是设置和管理的复杂模型。 TCP / IP的浅层/开销高于IPX(Internet分组交换)。...在此模型中,传输层不能保证的传送。 在TCP / IP中替换协议并不容易。 它与服务,接口和协议没有明确的分离。 摘要: TCP / IP的完整形式是传输控制协议/ Internet协议。

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

TCP-IP基础

TCP/IP通信举例 发送数据 假设甲给乙发送电子邮件,内容为:“早上好”。而从TCP/IP通信上看,是从一台计算机A向另一台计算机B发送电子邮件。...随后将附加了TCP首部的再发送给IPIP模块的处理 IPTCP传过来的TCP首部和TCP数据合起来当做自己的数据,并在TCP首部的前端在加上自己的IP首部。...因此,IP数据IP首部后面紧跟着TCP首部,然后才是应用的数据首部和数据本身。IP首部中包含接收端IP地址以及发送端IP地址。紧随IP首部的还有用来判断其后面数据是TCP还是UDP的信息。...流动时,从前往后依此被附加了以太网首部、IP首部、TCP首部(或者UDP首部)以及应用自己的首部和数据。而的最后则追加了以太网尾(Ethernet Trailer )。...如果判断得出包首部中的IP地址与自己的IP地址匹配,则可接收数据并从中查找上一层的协议。如果上一层是TCP就将IP首部之后的部分传给TCP处理;如果是UDP则将IP首部后面的部分传给UDP处理。

1.4K20

TCP

问题 在 TCP 这种字节流协议上做应用层分包是网络编程的基本需求。...因此,“粘问题”是个伪命题 短连接分包 对于短连接的 TCP 服务,分包不是一个问题,只要发送方主动关闭连接,就表示一个消息发送完毕,接收方 read() 返回0,从而知道消息的结尾 TCP 发送机制...为了提高 TCP 的传输效率,TCP 有一套自己的发送机制 TCP 维持一个变量,它等于最大报文段长度 MSS。...只要缓存中存放的数据达到 MSS 字节时,就组装成一个 TCP 报文段发送出去 由发送方的应用进程指明要求发送报文段,即 TCP 支持的推送(push)操作 发送方的一个计时器期限到了,这时把当前已有的缓存数据装入报文段...(但长度不能超过 MSS)发送出去 长连接分包 对于长连接的 TCP 服务,分包有四种方法 消息长度固定 使用特殊的字符或字符串作为消息的边界,例如 HTTP 协议的 headers 以“\r\n”为字段的分隔符

1.6K00

TCP

一、什么是粘? 粘TCP协议传输中一种现象概念。TCP是传输层协议,他传输的是“流”式数据,TCP并不知道传输是哪种业务数据,或者说,并不关心。...这个现象,我们称之为TCP。 ? 如上图,三个业务数据A、B、C被打包成一个数据进行传输;D被分割为连个数据进行传输。 所以综上,影响粘发生的原因: ?...1、业务数据的大小TCP 套接字缓冲区大小 如果需要写入的应用数据大于当前设置的TCP套接字缓冲区,则需要对应用数据进行分次写入。 SO_SNDBUF:发送缓冲区大小。...因为每一次发送报文都会包含IPTCP首部,所以,发送的报文段越大,效率越高,但是以不发生报文分段及双方都接受为基础。否则以较小的MTU发送。...关于MTU MSS相关知识可以参照:MTU(Maximum transmission unit) 最大传输单元 二、怎么处理粘? 传输层是业务无感知的,因此粘只能由业务层处理。

1.5K20

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

上一节大致了解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

1.1K10

TCP和拆

举个例子:客户端要发送原信息是A和B两个数据,服务端接收到之后,可能出现如下情况: 正常情况:读取到了A和B两个数据; 粘:A和B两个数据一起读取了; 拆:读取了A数据的一部分,A的另一部分和...B数据一起读取了; 由于TCP是没有消息保护边界的,也就是上面的消息,没有边界,服务端并不知道hello的o是一个边界,hello是一个单词,所以我们就得中服务端处理边界问题。...这也就是粘问题。 二、Netty中的粘如何解决 使用自定义协议 + 编解码器来解决。说人话就是:服务端你不是不知道消息的长度吗?...bys = msg.getBytes("utf-8"); int len = msg.getBytes("utf-8").length; // 创建协议

1.3K30

高速网络过滤

话题有些扯远了,越是今天信息如此膨胀,WAF越是会偏向于用电脑来解决而非嵌入式设备,但和我要提到的话题牵涉到的都是过滤。...想起大约十年以前,我们利用FPGA处理NGN信令,涉及到网络过滤、统计等。...当时,我们对于过滤是半定死的,比如UDP还是TCP、端口需要不需要过滤、如果需要端口过滤端口多少、IP需要补需要过滤、如需要IP过滤IP如何过滤,如此设计是因为对于当时的应用来说也已经足够。   ...如果熟悉抓包工具,比如tcpdump,会想到平常的时候我们对于2~4层的抓的确不会想WAF那样动辄regex作为判断条件,而是一堆基于固定位置(比如对于UDP,其端口号、IP地址等在中的偏移都是固定的...如果熟悉tcpdump和TCP/IP,对照资料,我们可以重新修改上述规则,把tcp、dst host、src port解析为偏移,从而整个规则写作偏移的形式。

95770

TCP IP基础知识

两台计算机通过TCP/IP协议通讯的过程如下所示 ?...Internet上的主机通过IP地址来标识,Internet上有大量路由器负责根据IP地址选择合适的路径转发数据,数据从Internet上的源主机到目的主机往往要经过十多个路由器。...也就是说TCP传输的双方需要首先建立连接,之后由TCP协议保证数据收发的可靠性,丢失的数据自动重发,上层应用程序收到的总是可靠的数据流,通讯之后关闭连接。...,如果因为网络故障丢失了数据或者丢失了对方发回的ACK段,经过等待超时后TCP协议自动将发送缓冲区中的数据重发。...,但是一个数据有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议。

1.1K40

TCP、UDP、IP 协议分析

为了改善这种缺点,大牛弄出了TCP/IP协议。现在几乎所有的操作系统都实现了TCP/IP协议栈。 TCP/IP协议栈主要分为四层:应用层、传输层、网络层、数据链路层,每层都有相应的协议,如下图 ?...在这里只对IPTCP、UDP协议头做一个分析。 首先来看看在网络中,一帧以太网数据的格式: ?...(3)偏移[4bit] 这里的偏移实际指的是TCP首部的长度,它用来表明TCP首部中32 bit字的数目,通过它可以知道一个TCP它的用户数据是从哪里开始的。...MSS = MTU - IP头 - TCP头,MTU表示最大传输单元,我们在IP头分析的时候会讲到,它一般为1500个字节。IP头和TCP 头部带可选选项的时候都是20个字节。...分成多个通过IP协议发送个对方。每个数据最大的字节为MTU - IP头 = 1500 - 20 = 1480。 四 、以太网头 ?

2.6K31

Netty之TCP

一、何为TCP/拆TCP会根据缓冲区的实际大小情况进行包的拆分和合并,所谓粘,就是将多个小的封装成一个大的进行发送。拆,即是将一个超过缓冲区可用大小的拆分成多个进行发送。...2、进行MSS大小的TCP分段 3、以太网帧的payload大于MTU进行IP分段 三、解决方法 1、消息定长,不够空格补 2、在尾添加回车换行符(也可自定义分隔符)进行分割,例如FTP 3...、将消息分成消息头和消息体两部分,消息头记录的消息的总长度 四、未考虑TCP/拆的案例 服务端: public class Server {     private int port;...五、加入Netty的TCP/拆解决方案。...Netty解决TCP/拆相关类以及功能: 1、LineBasedFrameDecoder:以\r或\r\n为分隔符 2、StringDecoder:将接收到的消息转换成字符串 3、DelimiterBasedFrameDecoder

1.2K10

什么是TCP、拆

TCP的原因和表现TCP指的是发送方在发送数据时,将多个逻辑上独立的数据粘合在一起发送,导致接收方在接收时无法正确地区分这些数据。...造成TCP的原因有多种,包括网络传输的延迟、缓冲区的限制、发送方的发送策略等。TCP的表现形式有两种:多个数据粘合在一起,形成一个大的数据。...TCP的原因和表现TCP指的是发送方在发送数据时,将一个逻辑上独立的数据拆分成多个小的数据发送,导致接收方在接收时无法正确地组装这些数据。...一个数据包被拆分成多个小的数据,但是在接收端可以正确地解析出每个数据TCP、拆的解决方式为了解决TCP、拆的问题,我们可以采用以下几种方式:1....TCP的原因和表现TCP指的是发送方在发送数据时,将一个逻辑上独立的数据拆分成多个小的数据进行发送,导致接收方在接收时无法正确地组装这些数据

37210

Netty与TCP

Netty如何解决TCP的问题? TCP/拆 TCP协议是个流协议,所谓流,就是指没有界限的一串数据。河里的流水,是连成一片的,没有分界线。...TCP底层并不了解上层业务数据的具体意义,他会根据TCP缓冲区的实际情况进行包的划分,所以在业务上一个完整的,有可能会被TCP拆分为多个进行发送,也有可能把业务上多个小包封装成一个大的数据发送,这就是所谓的...TCP和拆问题。...5.以太网的payload大于MTU进行IP分片。MTU指:一种通信协议的某一层上面所能通过的最大数据大小。...如果IP层有一个数据要传,而且数据的长度比链路层的MTU大,那么IP层就会进行分片,把数据分成若干片,让每一片都不超过MTU。注意,IP分片可以发生在原始发送端主机上,也可以发生在中间路由器上。

94640

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

通过之前的网络层基础知识,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报文的分片,若发送报文数据过大,则涉及到报文分片。

1.4K40

Netty TCP解决粘

可靠性:TCP是一种可靠的协议,它确保数据从发送方传输到接收方,无丢失、无损坏、有序传递。如果发生数据的丢失或损坏,TCP会重新发送这些数据,直到接收方成功接收。...有序传输:TCP保证数据的有序传输,即使数据到达的顺序与发送的顺序不同,接收方也会对其进行重新排序。 2、粘与拆现象 由于TCP是面向流式传输的一种协议,所以就像水管里的水一样,无界限的传输。...; 情况2: 服务器只接收到一个数据(存在粘问题) 因为tcp不会丢失数据,因此这一个数据就封装了2个原生数据的信息,这种现象叫做粘。...4个数据,而不是10个数据 ; 显然,发生了tcp; 这10条消息本来是10个数据报文,却被合并(粘)为4个数据; 问题是: 如何把这4个数据还原为10个数据呢 (在高并发情况下,各式各样的数据会更多...接收缓冲区读取数据,也会发生粘; 2、拆原因: 发送的数据大小 大于 TCP发送缓冲区,就会发生拆; 发送的数据大小 大于 报文最大长度,也会拆; 4、粘与拆解决方法 解决粘的关键在于

41320

IP、UDP和TCP的关系

IP:把数据送达目的主机 数据要在互联网上进行传输,就要符合网际协议(IP)标准,互联网上不同的在线设备都有唯一的地址,地址只是一个数字,这和大部分家庭收件地址类似,你只需要知道一个家庭的具体地址,...IP 头是 IP 数据开头的信息,包含 IP 版本、源 IP 地址、目标 IP 地址、生存时间等信息。 简化的 UDP 网络三层传输模型 ?...通过端口号 UDP 就能把指定的数据发送给指定的程序了,所以IP 通过 IP 地址信息把数据发送给指定的电脑,而 UDP 通过端口号把数据分发给正确的程序。...相对于 UDP,TCP 有下面两个特点: 对于数据丢失的情况,TCP 提供重传机制; TCP 引入了数据排序机制,用来保证把乱序的数据组合成一个完整的文件。...本文链接:https://zhangbing.site/2019/08/19/IP-UDP-TCP/。

1.8K30

以太网数据TCPIP、ICMP、UDP、ARP协议头结构详解

(4)校验和(Check Sum):和TCP和校验和一样,不仅对头数据进行校验,还对的内容进行校验。...当源主机需要将一个数据要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有﹐就直接将数据发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播...此ARP请求数据里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。 3. 网络中所有的主机收到这个ARP请求后,会检查数据中的目的IP是否和自己的IP地址一致。...如果不相同就忽略此数据;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据,告诉对方自己是它需要查找的...源主机收到这个ARP响应数据后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据,表示ARP查询失败

4K10
领券