网络原理TCP/IP

Java:网络原理-TCP/IP 比如开发一个外卖软件,展示"商家列表"此处就需要先确定传递的信息是啥.a.请求:用户id;用户所处的位置b.响应:商家列表,包含多个商家,包含商家的名字,距离,图片,评分... 阅读详情

本文的题目为什么只说TCP,为什么不包含UDP,因为在传输层当中,TCP的使用程度,复杂程度,相关的知识点是占大头的!!!

应用层

因为对于TCP/IP五层协议中,我们主要接触到的就是应用层以及传输层,所以我们先简单了解一下应用层相关的

我们在平时编写应用层代码的时候,主要是要自己自定义协议,前后端来确认传输的数据信息以及传输的数据格式,就好比消息传输的程序:我们就约定客户端要这样发送:用户名;消息(张三;你好)以包含这样的数据以及数据之间分号的格式进行传输,所以到了服务器这端,我们就知道了前面是用户的姓名,分号后面的是要发送的消息

传输层

UDP

UDP的协议格式

在传输层当中,我们主要是加上了16位源端口和目的端口,这里的16位表示的数字是0-65535,所以你的端口号也是在这之间进行选择,不过0-1023已经被提前选掉了,我们一般是从这之后进行选择

(窗口大小字段里的数字默认单位是bit,1byte=8bit,1024byte=1kb)

16位长度:16位可以表示0-65535,这里的单位是byte,所以可以表示0-64kb的数据,我们UDP首部固定有8个字节,所以根据16位长度就可以知道数据的大小

16位校验和:这里面有很多函数,主要是为了校验数据有没有正确的传输过去,在传输过去之前会根据函数计算一个数值(也就是校验和),在接收方收到数据后也会根据函数计算一个数值,如果两个数据一对比,发现一样了,那大概率是传输成功了

TCP

接下来我们主要引入TCP的一系列协议来对这个图进行一个理解

我们先介绍一下我们已知的

(窗口大小字段里的数字默认单位是bit,1byte=8bit,1024byte=1kb)

16位源/目的端口号:这个还是和UDP上面讲的一样,也是一个0-65535的数字选择,并且我们一般在1024-65535中进行选择

4位首部长度:4位的话表达的范围是0-15,单位依旧是字节,但是我们看到下面表识的是TCP的首部最小长度的20嘛,那好像就不对劲了,所以我们这边的单位其实是4位,也就是每一个数字都可以存4个字节,就是0-15这里面的所有数字,每一个数都是表示4个字节的,所以就是0-60字节,所以首部长度就是20-60

保留:这里保留了6位,也就是多给了6位的空间,用来方便以后加一些新功能

16位校验和:这里和UDP相同

接下来来介绍TCP的性质,也会逐渐介绍出上图的剩下内容

确认应答

确认应答这个机制是保证数据实现可靠传输的关键之一,应答也就是ACK,就是上图标志位的第二个,如果这个位置是1的话就代表他拥有应答的功能,就像下面这张图一样,客户端发送0-1000的数据,服务器就返回一个ack,来告知对方我收到了

后发先至

但是接下来就出现问题了,就是网络中可能会出现后发先至的情况,也就是你后面发出的问题,对方先一步接收到,然后给你回复,这时候你就会拿着后面的回答去对应前面的问题,这样显然是不合理的,那为什么会出现这样的问题呢:就是数据在网络传输过程中走的路线是不一样的,因为网络中的传输路线是很多的,并且每个数据等待的时间也是不一样的,也就是路由器中排队的时间不一样,当某一时刻数据传输的速度大于路由器接收的速度了,那么就会造成拥堵,我们一个数据从你的电脑到目标的电脑,会经过很多的路由器,所以路线的可能性会很多很多,所以结果也是很可能会有后发先至的,如下有一个数据经过路由器的简图

所以为了应对这个问题,我们就会讲到上图中的32位序号以及32位确认序号

为了让数据可以有正确的顺序,我们会对数据进行一个排序,又因为TCP是面向字节流的,所以我们没有一条数据,第二条数据重要的概念,所以我们是对字节流进行编号,并且是对第一个进行编号,后续的数据依次递增,也就是说,我们对第一条数据编号为0,那么后面的依次递增,也就可以表示比如我们这次传输的是从0-1000的数据了,那么确认序号又是什么,确认序号是服务器传给客户端的一个数字,就如下图,我传入0-1000的数据,服务器返回一个1001,这1001有两层的含义,第一层是告知对方我收到了0-1000的数据,还有一层是告诉对方我接下来期待1001开始的数据

这个排序的操作是在服务器的缓冲区进行的,那缓冲区还有哪些作用呢:1,暂存已经收到的但还没有读到的数据 2,暂存后发先至的数据 3,根据序号判断哪些数据已经收到 4,识别重复的数据 5,配合TCP的接收窗口,告诉对方我这里还剩多少缓冲区空间

确认应答的ack和确认序号是两个东西,不过这两个往往一起发送

超时重传

前面也说了,数据在网络里的路线是很复杂的,所以会出现后发先至的情况,那也会出现说数据丢了的情况,我们俗称丢包

当我们客户端发送一个数据但是迟迟没有收到服务器的ack应答的时候,可能是因为什么的数据丢了,或者是因为服务器发送的ack丢了,这两种都是有可能的,所以我们会等待一定的时间,对数据进行一个重新的传输,因为我们是无法判断是哪一种包丢了,所以如果数据没丢,我们再传一份数据不是服务器那边就堆积了两份吗,不是的,我们刚刚不是讲到一个服务器的缓冲区嘛,这里面还有一个很重要的功能是检查重复的数据,我们传过去的数据都是有编号的,再次传输过去,就会在缓冲区里面先检查一下是否已经有了这组数据,如果有了就会进行去重操作,重传的等待间隔是不固定的,并且一次会比一次长,并且我们重传的次数也是有上限的,当我们重传到一定次数之后,我们就会认为对方是网络故障,机会断开对方的TCP连接

确认应答以及超时重传是TCP中保证数据可靠性的两个核心机制!!!!

连接管理(面试重点)

我们这里的操作俗称三次握手,是操作系统内部进行的

我们建立连接的过程就相当于打招呼,我们会传输一个不带数据的一个包,来起到打招呼的一个效果,第一次syn:我要和你服务器建立连接,我要保存你的信息,第二次syn:我要和你客户端进行连接,我要保存你的心里,通过这两个操作之后,才是正式的建立了连接,因为我们服务器返回的ack以及syn可以算是同步的,中间没有其他的业务,所以称为三次操作,当上面标志位中的SYN为1的时候,就是这里的同步报文,这里面的标志位并不是绝对的只有一个是1,就这里的服务器返回的ack和syn一起,那么这两个就会同时是1

三次握手可以初步检查传输链路是否通畅,也可以检验一下上方的发送以及接收能力

三次握手还有协商的能力,他们会协商好我们上面说的32位序号,但是这里的协商并不是协商一个共同的编号出来,而是双方自己选定一个序号并且告知对方,比如客户端这边决定一个1000,服务器那边决定一个6000

并且每一次连接,起始的序号都会差距很大,不容易重复,这样就是防止久数据的混淆,网络传输不仅会丢包,甚至可能出现我数据转了很大一圈才到达服务器,那如果刚刚好我这个时候服务器已经断开连接了,那原来绕一大圈的数据过来就会造成混淆,比如我原来的数据是10000,并且我第二次连接后的起始值是0,那么就会在我陆续传输到10000这个数据的时候,就会分不清我第一次传的和我第二次传的,因为他们都叫10000,所以我们每一次连接的起始值都会差别很大,比如一次是23420,一次是100200,

断开连接

我们俗称四次挥手

这里和三次握手差不多,也是发一个没有载荷的头给对方,并且服务器和客户端都有可能会先发起断开连接,并且这里是不可以ack和fin合并的,这里和上面的三次握手不一样,因为三次握手的ack以及syn是告诉客户端我知道你要和我连接并且我也同意连接了,这是可以一起进行的,但是这里先发送的fin是为了告诉对面,我没有数据要发了,我这边可以断开连接了,但是由于TCP的全双工特性,服务器也是可以发送数据给对方的,所以在我服务器发送ack告诉对面我知道你可以断开连接之后,还会有可能自己的数据还要发,所以这里的fin和ack一般都不会同时进行,不过也有可能变成三次,这和下面讲的延时应答有关系

状态理解

这是一个TCP整体的建立连接,断开连接以及数据传输的过程,里面也包含了很多的状态,我们来观察一下,我们来简单聊一下一些不容易看出来的状态,LISTEN:这个是服务器启动,并且关联好端口号之后会显示的,这个时候就随时可以和客户端连接上了,ESTABLISHED:这个代表连接已经建立,接下来就可以发送数据了,CLOSE_WAIT:这个是收到断开连接一方的人会陷入的等待,这个时候确实就是在等待自己调用close方法,如果你代码中一直没有调用close,就可能出现好多个CLOSE_WAIT,TIME_WAIT:这个等待就是为了等待最后一个ack,也就是最后一个ack也可能丢包,所以会等待一会,等待后续没有FIN重传了,那就可以安心的释放TCP了

滑动窗口

我们确认应答机制每次都要发送一个数据,就要等待一会ack,那么这样效率就会很低,TCP为了缓解这个效率问题,有了滑动窗口这样一个机制,类似下面这个简图

这样我们就可以一次性发送多组数据,完整过程就是,假设我们先一次性发送0-4000的数据,然后ack比如返回3001,那么我们不用前面1001以及2001的ack我们就知道对方已经收到0-3000的数据了,这个时候,我们的窗口就可以往后滑动,就滑动到3000的位置,然后接着向后发送数据,我们滑动窗口将数据分为了四个区域,如上图,1000就是已经发送并且收到ack的数据,2000,3000可能是发送了,但是还没收到ack的,4000,5000就是准备可以发送的数据,而6000,7000就是窗口外还没轮到的数据,那如果我一部分数据丢包了呢

就像我们这样的情况,1001-2000的数据并没有传到服务器,那么服务器就会多次返回一个2001的ack,那客户端收到多次同样为2001的ack时候,肯定就会想到是这部分数据丢了,那么客户端就会出现传一遍1001-2000的数据,这个重新传输也称为快速重传,当我们补齐这部分数据之后,服务器就会正常返回5001的ack了

那我们可能会思考超时重传以及快速重传会不会有冲突:当然是不会的,这两个是分工明确的重传,当我们数据发送很慢的时候,我们后续不会快速并且多次的发送数据的时候,也就不会多次收到重复的ack来启动快速重传,这个时候我们就会开启一个计时器,等待超过时间就会启动超时重传,相反的,快速发送多组数据并且丢了就会出发多次重复的ack,这个时候就是快速重传

流量控制

我们为了提高效率才有了滑动窗口,那窗口越大肯定效率越高,但是能一直增大吗,答案肯定是不可以的,因为我们数据到达服务器之前会进入服务器的缓冲区,但是缓冲区的大小是一定的,但是一旦缓冲区的大小满了之后,新的数据来了就会被丢弃,所以流量控制就是为了告诉对方我还有多少缓冲区的大小,这个是通过上面的16位窗口大小来表示的,这个数据就是搞清楚缓冲区还剩多少空间,然后通过ack一起告诉对方,【我们ack,确认应答号(32位确认序号)以及这里的16位窗口大小是不同的东西】如果我们的缓冲区可能很大,可能有20多mb,但是我们16位最多只能表示0-65535,也就是64kb的大小,无法真实或者更加准确的告诉对方我还剩多少空间,那这个时候TCP选项里面有一个机制,就是窗口扩展因子,这个扩大是通过让16位左移多少位来扩大空间

当我们缓冲区没有空间之后,对方就会停止发送数据了,那么问题来了,发送数据的一方怎么知道对方还有没有空间了呢,不是已经无法发送数据了,那也就没有TCP报文返回了,这个时候TCP就很聪明了,它有一个窗口探测包,没有载荷,只是为了触发ack,得到最新的大小数据

拥塞控制

我们刚刚讲到滑动窗口因为接收方的处理能力,我们要进行一个流量控制,那我们不仅需要考虑接收方的能力,还需要考虑到你传输过程的传输能力

我们中间会讲过许多的部件,路由器啊,交换机之类的,这里面就拿路由器举例子,如果我们传输的速度大于其中一个路由器的接收速度,那么就会造成堵塞,因为我们中间的路线很复杂,并且基本上每次走的都是不同的路线,所以我们将中间的线路统一理解为一个整体,我们就得去试探中间路线的处理能力,怎么去试呢,我就先按慢一点的速度去传输数据,如果没有丢包,就加大速度,如果丢包了,就减速,这也是控制窗口大小的一个重要指标,我们窗口大小不是固定的,而是动态的,我们通过流量控制来确定接收方的处理能力,通过拥塞控制来确定中间路线的处理能力,并且我们这两个指标会同时去考核,并且拿到其中较小的值来作为窗口的大小

拥塞窗口的变化规律(曲线)

这是一张拥塞窗口的变化图,我们首先是慢启动,做一个试探先,然后进行指数级的增长,当达到我们设定的阈值之后,我们会进行线性的增长,直到我们快的丢包了,接下来有两种方案,一种是回到慢增长的时候,然后进行指数级的增长,然后到达阈值之后再次线性增长,还有一种方案是我们的起点是丢包的地方/2,然后从那个地方开始线性增长

延时+捎带应答

这两个机制可以放在一块去说,延时就是当我们发送数据之后,我们会等一会再给出ack,这种情况有哪些好处呢,首先可以减少我们ack的发送量,可以增加效率,就好比我们滑动窗口发送0-4000的数据,我们不需要每次都从1001,2001的ack传起,我们可以延时,然后传回3001的ack,这样不仅ack少了,并且也可以让发送方知道对方收到了0-3000的数据,还有就是上面讲到的服务器的缓冲器的空间,我们可以等一会返回剩余量,等处理一些数据之后,返回的ack并且告知一个更大的空间,这样可以一次性发更多的数据,也可以提高效率

至于捎带应答呢,往往是和延时应答结合一起的,就好比我们服务器需要返回的数据很快就能处理好,并且我们ack也延时了一会,这个时候,返回的数据以及ack就可以一起发送回去,上面讲到的四次挥手为什么也可以减少为三次,就是因为如果我们服务器最后的程序比较快,这样就可以和延时的ack一起返回了

面向字节流-粘包

我们讲到过TCP是面向字节流的,如果我们第一次发送aaa,第二次发送bbb,第三次发送ccc,这样TCP在读取的时候,他想怎么读就怎么读,这样我们就没办法保证我们读取出来的是一个完整的应用层数据包了,这三份数据会粘在一起,就可能读到aa,或者aaab这样的情况,在UDP里面,它是面向数据报的,就一份一份的通过socketpacket读,就不会有这样的烦恼,所以我们会怎么做呢,第一种:我们在一份数据的结尾添加一个特殊的分割符,来区分每一份数据,第二种:就是在我们的数据头部添加一个属性,比如约定前两个字符表示数据长度,这样也可以很好的区分开。不过我们平时在开发中很少会遇到这样的问题,因为我们一般是使用现成的框架,在框架里面一般已经把粘包问题解决了

异常情况

(1)进程崩溃

进程崩溃和四次握手完全相同,当我们向服务器发起退出的时候,可能我们的客户端在服务器刚返回ack的时候就进程崩溃了,这个时候我们的操作系统任然会持有这个TCP的连接,所以还是会跟四次握手一样读取对方的fin以及返回ack,操作系统会帮助我们释放掉资源,就相当于是调用了close方法

(2)正常情况主机关机

就像这样的情况,再我们发完fin之后,我们的主机就进行关机了,所以服务器再等待我们的ack的时候,就等不到,服务器没法确定是什么情况,所以会进行重传,当重传达到一定的次数之后,我们服务器就会单方面的断开连接,也就是删除对方的信息,释放掉一些资源,就算对方没有断开并且删除信息,起码服务器自己删除掉了,也是断开了连接,这个情况下,我们的客户端的TCP其实还保存着这个连接状态,所以服务器会尽可能的将四次握手走完

(3)断电情况下主机关机

3.1接收方挂了

当我们发送方发送数据之后,接收方因为掉电无法回复ack,这个时候,发送方就会还是一样的进行超时重传,当到达一定的次数之后,发送方知道对方已经不会传来ack了,就会主动断开连接

【不过如果我发送方还保持着久连接,还没断开,然后我们接收方断电重启了,但是旧连接的信息已经丢失了,这个时候发送方要求重新连接,但是接收方压根不知道对方信息了已经,所以这个时候,接收方就会发送一个复位报文也就是上面标志位中的RST】

3.2发送方挂了

那如果是发送方挂了,再接收方眼里就是发送方的一端突然沉默了,不知道对方是挂了,还是要休息一会,所以我们接收方会发送出去一个周期性的心跳包,看看对面还或者没有,如果真的挂了,接受方就会解除连接(这个也是看这条连接是否长时间空闲,还是说一直平凡交互来决定心跳包的效果,这里主要是为了引出心跳包这个概念)

(4)网线断了

当我们网线断了的时候,我们依旧会给对方重传数据,看看到底是什么情况,并且心跳包也会周期性的传输,但是当我们数据很多的时候,可能心跳包的作用就不那么明显,就会被我们的重传效果掩盖,当我们数据基本上没有的时候,心跳包的效果会更明显一点,在当我们已经知道对方无法连接上的情况下,我们要不是告诉应用层说连接断开,要不然就是使用RST强制断开连接

主动断开(FIN)= 正常结束连接;RST = 立刻强制废掉连接

到底走 FIN 正常断开,还是发 RST 强制断开,主要是由“应用程序的关闭方式 + 操作系统 TCP 协议栈当前看到的连接状态”共同决定的。

剩余部分

关于TCP的协议格式我们差不多都讲的差不多了,还剩一些我们可以了解一下,标志中的URG,这个表示紧急指针有效,这个配合那个16位紧急指针来使用,因为我们一般读数据不是顺序读下去嘛,但是如果我们需要一些数据先读,就是有插队的情况,就需要用到这个,标志位中的PSH,这个是一个催促标志位,就是希望接收方尽快返回数据,不过这个一般没什么用,我们一般是是看应用程序的代码中是怎么写的

深入解析DMR协议中的4-CPFSK调制技术与实现 本文深入解析了DMR协议中采用的4-CPFSK调制技术。该技术凭借其连续相位、恒包络的特性,在有限的12.5kHz信道带宽内实现了稳健的通信,有效对抗干扰并提升功放效率,是DMR数字对讲机清晰、稳定通信的核心保障。文章详细阐述了其原理、实现细节及在协议栈中的协同作用。 阅读详情

相关推荐

功率电感的设计步骤

学习视频原链接截图1截图2。

qq_32419593的博客 4887

网络原理 TCP/IP

应用层,传输层,网络原理,TCP,UDP,网络层,数据链路层,DNS

2402_88670936的博客 2651

达梦的自定义类型和存储过程支持创建同义词,不支持同义词使用?

达梦8的自定义类型和存储过程支持创建同义词,但是通过同义词调用报错,而在oracle上验证没有问题,难道是发现了达梦的bug了?非也非也,详情请见下文

wy071218的专栏 979

网络原理 - TCP/IP

应用层就像我们日常用的各种 APP(如外卖软件、社交软件),程序员通过调用系统提供的网络 API 写代码,实现功能。这里不仅有现成协议(如 HTTP),更多时候需要根据场景自定义协议,约定客户端和服务器交互的信息、数据格式。以点外卖打开外卖 APP,首页要显示附近商家列表。此时客户端需把用户位置发给服务器,服务器返回商家名称、图片、评分等信息。交互哪些信息由产品经理和程序员共同确定,数据怎么组织(格式)就是程序员自定义协议的工作。约定请求响应:客户端按约定发请求,服务器按约定解析;

2301_80176093的博客 1297

LM358实战:手把手教你搭建电流检测电路(附电阻选型计算)

本文详细解析了使用LM358运算放大器搭建电流检测电路的全过程,包括基础原理、采样电阻选型、放大电路设计及PCB布局技巧。通过实战案例和精确计算,帮助工程师快速掌握低成本、高精度的电流检测方案,适用于电源管理、电机控制等多种应用场景。

weixin_30872157的博客 451

《Cesium 基础知识点》- 申请 Cesium Ion 密钥

一、访问 https://cesium.com/ion/signin/tokens 二、登录/注册 三、申请 四、使用 // 密钥 let defaultAccessToken = 'your token string'; // 设置 Cesium.Ion.defaultAccessToken = defaultAccessToken; // 初始化 let viewer = new Cesium.Viewer('cesiumContainer', {}); ...

前端技术 2572

网络原理(TCP/IP)

网络原理涉及到计算机网络的基本组成、工作原理、以及网络通信的基础知识。而计算机网络是由节点链路和协议三个重要元素组成的系统,通过通信线路连接多个计算机及其外部设备,实现资源的共享和信息的传递。网络通信的本质是网络数据传输,计算机之间通过网络来传输数据。

2302_80521088的博客 1562

多模态RAG实战:为LLM装上视觉之眼,实现图文混合文档智能问答

检索增强生成(RAG)技术通过结合外部知识库,有效缓解了大语言模型(LLM)的幻觉问题,并扩展了其知识边界。其核心原理是将文档切分、向量化后存入向量数据库,在问答时通过语义检索召回相关上下文,辅助LLM生成更精准的答案。这项技术的核心价值在于,它为大模型应用提供了一种低成本、高效率的知识注入与实时更新方案,广泛应用于智能客服、知识库问答、文档分析等场景。随着应用深入,纯文本RAG在处理产品手册、学术论文、设计图纸等富含视觉信息的文档时面临瓶颈。本文聚焦的**多模态RAG**和**视觉理解**技术,正是为了解

weixin_30698527的博客 723

网络原理笔记5-TCP/IP

...

seloba 128

机器学习算法原理:详细介绍各种机器学习算法的原理、优缺点和适用场景

现在,我们将进入到机器学习的核心部分——算法原理。在本篇文章中,我们将详细探讨各种机器学习算法的原理、优缺点和适用场景。

a871923942的博客 2965

SAP Parallel Accounting(平行分类账业务)配置及操作手册(超详细的说明和测试)

非常详细的介绍了SAP 的平行分类账配置以及测试效果哦

nopicture的博客 4346

网络原理-TCP/IP

TCP 和 UDP 没有绝对的优劣之分。它们是程序员可以根据具体应用场景和需求选择的工具。需要可靠性时选 TCP,需要速度和实时性或广播时选 UDP。

2403_83543687的博客 1946

32、机械臂数字孪生模型创建指南

本文介绍了如何在MATLAB Simscape中为一款3自由度(DOF)微型机械臂创建数字孪生模型。内容涵盖硬件参数测量、Simulink模型搭建流程,包括初始条件设置、基座与上部主体构建、上臂结构设计等关键步骤。通过使用Solid、Revolute Joint和Rigid Transform等模块,实现机械臂多体系统建模,并支持后续运动仿真与物理系统的对比诊断。读者可依据指南逐步完成模型构建,相关资源可通过MATLAB File Exchange或指定网站获取。

qsc9012345的博客 215

网络原理---TCP/IP

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你参加为期14天的创作挑战赛!

2301_80501383的博客 1070

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

网络原理与编程实战:从 TCP/IP 到 HTTP/HTTPS

本文系统梳理了计算机网络核心知识,从基础概念到协议实现。首先介绍了网络分类(LAN/WAN)和通信标识(IP/端口);其次详细解析TCP/IP五层模型及数据传输过程;然后对比分析TCP(可靠传输)和UDP(快速传输)的特性及代码实现;最后深入讲解HTTP/HTTPS协议原理及安全机制。文章通过理论结合实践的方式,帮助读者建立完整的网络知识体系,并提供了Java网络编程示例,涵盖异常处理、连接管理等最佳实践,为开发高效安全的网络应用奠定基础。

xiepinan的博客 903

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

网络原理之TCP/IP

网络原理之TCP/IP 1.应用层 所写的所有代码都在应用层,都是为了完成某项业务,如翻译等。(网络传输的开始) 2.传输层 负责数据能够从发送端传输接收端。 2.1端口号 端口号(Port)标识了一个主机上进行通信的不同的应用程序; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d26hC93l-1606623215490)(E:\学习\JAVA\基础知识\笔记\JAVAweb\图片\端口号.jpg)] 在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”

weixin_45309293的博客 2757

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【网络原理】TCP/IP协议

从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。他们与 TCP 或 IP 的关系紧密,是互联网必不可少的组成部分。TCP/IP 一词泛指这些协议,因此,有时也称 TCP/IP 为网际协议群。

m0_72161237的博客 4674

【网络】网络原理之TCP/IP

自定义应用层协议步骤:先理清交互要传输什么信息,然后决定信息按什么格式来组织比如点外卖时先启动程序,启动程序就涉及到一次网络通信:请求:用户信息,位置信息响应::商家的信息(商家名称,商家位置,商家评分,商家预览图)那可以看到请求和响应中包含的有时候可不是一条信息,那这些信息需要通过一定的格式来组织,具体使用啥样的格式来组织,这是可以自定义的,这个过程就是自定义应用层协议。✅一般使用的格式有以下几种:1️⃣使用分隔符:请求:用户ID;位置信息(东经,北纬)响应:商家ID;商家名称;商家位置;

haoshaokang_的博客 1412

网络原理与 TCP/IP 协议详解

【代码】网络原理与 TCP/IP 协议详解。

no_rt_h_se_v_en的博客 1392

【网络原理】TCP/IP四层协议——传输层

文章目录网络原理——TCP/IP四层协议传输层(important)TCP和UDP的区别UDP 网络环境 网络原理——TCP/IP四层协议 1、应用层:常用应用协议:HTTP、HTTPS、Socket、DNS 2、传输层:TCP、UDP 3、网络层(IP) 4、数据链路层 传输层(important) 传输层主要是有TCP和UDP TCP和UDP的区别 简单的来讲 UDP:无连接的、不可靠的、面向数据报。 TCP:有连接的、可靠的、面向字节流的。 UDP缓冲区:没有发送缓冲区、有接收缓冲区(防止接受到的消费

yangnanjie的博客 1392

JavaEE初阶——网络原理初探:从独立模式到TCP/IP五层模型

本文系统介绍了计算机网络的基础原理与发展历程。首先从网络发展史切入,对比了独立计算机模式与网络互联模式的差异;其次详细解析了局域网和广域网的特点及四种局域网组建方式;然后阐述了IP地址与端口号的作用,以及网络协议的重要性;接着解释了五元组概念和协议分层思想,比较了OSI七层与TCP/IP五层模型;最后完整描述了数据从封装到分用的传输全过程。文章通过生动比喻和图示,帮助读者理解网络通信的基本原理和分层设计思想,为深入学习网络技术奠定基础。

此人很懒,什么都留下了...快进来看看吧 1430

网络原理之TCP/IP协议

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。 ...

1605
上一篇: 网络编程套接字(socket)
下一篇: 网络原理(网络层,数据链路层)
评论 22
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值