-
2022-04-01 20:50:01TCP/IP 协议簇TCP/IP作为Internet的核心协议,被广泛应用于局域网和广域网中,TCP/IP 包含许多重要的基本特性,这些特性主要表现在5个方面:1.逻辑编制:每一块网卡 在出厂时厂家分配了一个独一无二的永久性的物理地址,在Internet中,为每台连入因特网的计算机分配一个逻辑地址,这个逻辑地址叫做IP地址。2.路由选择:IP数据包的路由选择3.域名解析:将域名映射为IP地址 域名具有教稳定的特点,而IP地址则容易发生变化。4.错误检测和流量控制:TCP/IP 具有分组交换确保数据信息在网络上可靠传递的特性。 包括检测数据信息的传输错误,确认传递的信息被成功接收,检测网络系统中的信息流量,防止出现网络拥塞。5.对应用程序的支持一. TCP/IP分成模型协议是对数据在计算机或设备之间传输时的表示方法进行定义和描述的标准。规定了进行传输,检测错误,传送确认信息等内容,TCP/IP是一个协议簇,它包含了多种协议。TCP/IP分层模型1.应用层: 应用层处在分层模型的最高层,用户调用应用程序来访问 TCPIP 互联网络,以享受网络上提供的各种服务。应用程序负责发送和接收数据。每个应用程序可以选择所需要的传输服务类型,并把数据按照传输层的要求组织好,再向下层传送,包括独立的报文序列和连续字节流两种类型。2.传输层: 传输层的基本任务是提供应用程序之间的通信服务 。传输层既要系统地管理数据信息的流动,还要提供可靠的传输服务,以确保数据准确而 有序地到达目的地。所以传输层协议软件需要进行协商,让接收方回送确认信息及 让发送方重发丢失的分组。在传输层与网际层之间传递的对象是传输层分组。3.网际层:又叫做IP层,主要处理机器之间的通信问题,它接收传输层请求,传送某个具有目的地址信息的分组,有三个主要功能:把分组封装到IP数据报中,把数据报直接送到目标机或路由器,再把数据报交给下面的网络接口层中对应的网络接口模块。4.网络接口层:又叫做数据链路层,负责接收IP数据报。二.网络接口层协议TCP/IP 协议不包含具体的物理层和数据链路层,只定义了网络接口层作为物理层与网络层的接口规范。三.网际层协议IP由于 IP 只提供无连接、不可靠的服务,所以把差错检测和流量控制之类的服务授权给了 其他的各层协议,这正是 TCPMP 能够高效率工作的一个重要保证。这样,可以根据传送数据 的属性来确定所需的传送服务以及客户应该使用的协议。例如,传送大型文件的 FTP 会话就需 要面向连接的、可靠的服务(因为如果稍有损坏,就可能导致整个文件无法使用)。IP 的主要功能包括将上层数据(如 TCP、UDP 数据)或同层的其他数据(如 ICMP 数据)封装到 IP 数据报中;将 IP 数据报传送到最终目的地;为了使数据能够在链路层上进行传输,对数据进行分段;确定数据报到达其他网络中的目的地的路径。IP 协议软件的工作流程:当发送数据时,源计算机上的 IP 协议软件必须确定目的地是在同一个网络上,还是在另一个网络上。IP 通过执行这两项计算并对结果进行比较,才能确定数据到达的目的地。如果两项计算的结果相同,则数据的目的地确定为本地;否则,目的地应为远程的其他网络。如果目的地在本地,那么 IP 协议软件就启动直达通信;如果目的地是远程计算机,那么 IP 必须通过网关(或路由器)进行通信,在大多数情况下,这个网关应当是默认网关。当源 IP 完成了数据报的准备工作时,它就将数据报传递给网络访问层,网络访问层再将数据报传送给传输介质,最终完成数据帧发往目的计算机的过程。当数据抵达目的计算机时,网络访问层首先接收该数据。网络访问层要检查数据帧有无错误,并将数据帧送往正确的物理地址。假如数据帧到达目的地时正确无误,网络访问层便从数据帧的其余部分中提取数据有效负载(Payload),然后将它一直传送到帧层次类型域指定的协议。在这种情况下,可以说数据有效负载已经传递给了IP。四. ARP和RARP地址解析协议(Address Resolution Protocol, ARP)及反地址解析协议(RARP)是驻留在网际层中的重要协议。ARP 的作用是将 IP 地址转换为物理地址,RARP 的作用是将物理地址转换为IP 地址。网络中的任何设备,主机、路由器和交换机等均有唯一的物理地址,该地址通过网卡给出,每个网卡出厂后都有不同的编号,这意味着用户所购买的网卡有着唯一的物理地址。另一方面,为了屏蔽底层协议及物理地址上的差异,IP 协议又使用了 IP 地址,因此,在数据传输过程中,必须对 IP 地址与物理地址进行相互转换。五.网际层协议 ICMPInternet 控制信息协议(Internet Control Message Protocol,ICMP)是网际层的另一个比较重要的协议。由于 IP 是一种尽力传送的通信协议,即传送的数据报可能丢失、重复、延迟或乱序,因此 IP 需要一种避免差错并在发生差错时报告的机制。ICMP 就是一个专门用于发送差错报文的协议。六. 传输层协议 TCPTCP(Transmission Control Protocol,传输控制协议),是整个 TCP/IP 协议族中最重要的协议之一。它在 IP 提供的不可靠数据服务的基础上,为应用程序提供了一个可靠的、面向连接的、全双工的数据传输服务.传输层协议 UDP用户数据报协议(User Datagram Protocol,UDP)是一种不可靠的、无连接的协议,可以保证应用程序进程间的通信。与同样处在传输层的面向连接的 TCP 相比较,UDP 是一种无连接的协议,它的错误检测功能要弱得多。可以这样说,TCP 有助于提供可靠性:而 UDP 则有助于提高传输的高速率性七.应用层协议随着计算机网络的广泛应用,人们也已经有了许多基本的、相同的应用需求。为了让不同平台的计算机能够通过计算机网络获得一些基本的、相同的服务,也就应运而生了一系列应用级的标准,实现这些应用标准的专用协议被称为应用级协议更多相关内容
-
TCP协议和UDP协议
2022-02-18 13:30:131.传输控制协议TCP 1.1TCP的主要特点: 1.1.1面向连接的运输层协议 socket部分讲述 tcp连接的建立 tcp连接的释放 tcp的有限状态机 1.1.2每一条TCP连接只能有两个端点,每一条TCP链接只能是点对点的(一对一)...(注:本文部分摘自《计算机网络 谢希仁》)
目录
1.1.2每一条TCP连接只能有两个端点,每一条TCP链接只能是点对点的(一对一)
1.传输控制协议TCP
1.1TCP的主要特点:
1.1.1面向连接的运输层协议
(1)TCP的连接
TCP的许多特性都与TCP是面向连接的这个基本特性有关,因此要对TCP的连接有更清楚的了解。
每一条TCP连接唯一地被通信两端的两个端点所确定,所谓的端点就是套接字(或插口)。
套接字的表示方法:在点分十进制的IP地址后面写上端口号,例如IP地址是192.3.4.5,端口号是80,那么套接字就是(192.3.4.5:80) 。
(2)TCP的连接建立
三次握手:TCP建立连接的过程叫做握手,握手需要在客户端和服务器之间交换三个TCP报文段。此过程如下:
(3)tcp的连接释放
四次挥手过程如下:
(4)tcp的有限状态机
可以看我之前的这篇文章,这里不再赘述。
TCP连接的状态——TIME_WAIT的存在意义
https://blog.csdn.net/m0_54355780/article/details/121190546
1.1.2每一条TCP连接只能有两个端点,每一条TCP链接只能是点对点的(一对一)
1.1.3TCP提供可靠交付的服务
(1)可靠传输的工作原理
①停止等待协议:
“停止等待”就是每发送完一个分组就停止发送,等待对方确认。在收到确认后再发送下一个分组。
- 无差错的情况下:一端发送,另一端等待并接收
- 出现差错的情况:一端在一段时间(会设置有超时计时器)一直没有收到确认,认为自己刚发送的内容丢失,于是重新发送,这就叫超时重传。这里需要注意三点:第一,发送完自己的分组需暂时保留自己的副本,以防超时重传;第二,分组和确认分组要编号,从而确认哪些分组收到确认,哪些分组没有收到确认;第三,超时计时器设置的重传时间应当比数据在分组传输的平均往返时间长一些。
- 确认丢失和确认迟到:
- 信道利用率
等值等待协议的信道利用情况如下图:
为了提高效率,发送方可以不使用低效率的停止等待协议,使用流水线传输,流水线传输就是发送方可以连续发送多个分组,不必每发完一个分组就停下来等待对方的确认。
②连续的ARQ协议
连续ARQ协议规定:发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。接收方采用累计确认的方式,也就是说:接收方不必对收到分组逐个发送确认,而是在收到几个分组之后,对按序到达的最后一个分组发送确认。
(2)可靠传输的实现
①超时重传时间的选择
报文段的往返时间RTT:采用自适应算法,记录一个报文段发出的时间,以及收到相应确认的时间。这两个时间之差就是RTT。
平滑的往返事件RTTs:RTT的一个加权平均往返时间
上式的α值在RFC 6298推荐为0.125 。
超时重传时间RTO:报文每重传一次,就把超时重传时间RTO增大一些,取新的重传时间为旧的重传时间的2倍。当不再发生报文段的重传时,才根据下面的式子计算超时重传时间。
②选择确认SACK
如果收到的报文没有差错,但是未按序号,中间还缺少一些数据,使用选择确认可以只传送缺少的数据而不重传已经确认到达接收方的数据。
要使用选择确认,需在TCP首部的选项中加上“允许SACK”的选项,并且双方必须事先商定好。
但是首部最长40字节,如果要报告5个字节块的边界信息,那么5个边界需要2*5*4=40个字节来表述,再加上一个字节指明SACK选项命令一个字节指明SACK占用多少字节,这就一共需要42字节,超出首部长度。因此大多数的实现还是需要重传全部的数据块。
③流量控制
流量控制的目的:让发送方的发送速率不要太快,从而让接收方来的及接收
- 滑动窗口:在 TCP 的报头中有一个字段叫做接收通告窗口,这个字段由接收端填充,是接收端告诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。所以发送端就会有一个发送窗口,这个发送窗 口的大小是由接收端填充的接收通告窗口的大小决定的,并且窗口的位置会随着发送端数据 的发送和接收到接收端对数据的确认而不断的向右滑动,将之称为滑动窗口。(TCP的滑动窗口以字节为单位)
p3-p1=A的发送窗口;p2-p1=已发送但尚未收到确认的字节数;p3-p2=允许发送但尚未发送的字节数。此外,需要注意的是,并不是发送方将数据直接发给接收方,而是发送方的应用进程把字节流写入TCP的发送缓存,发送缓存用来暂时存放发送应用程序传送给发送方TCP准备发送的数据以及TCP已发送出但尚未收到确认的数据。接收方的应用进程从TCP的接收缓存中读取字节流,接收缓存用来暂时存放按序到达但尚未被接收应用程序读取的数据以及为按序到达的数据。最后在滑动窗口的部分知识中需要注意三点:第一,同一时刻,发送方的发送端口并不总是和接收方的接收窗口一样大,其会根据网络拥塞情况适当减少自己的窗口值;第二,不按序到达的数据,先临时存放在接收缓存中,等到缺少的字节收到后,再按序交付给上层的应用进程;第三,TCP接收方要有累计确认的功能。
- TCP的传输效率:TCP报文段的发送时机有三个控制机制:第一种,缓存中存放数据达到MSS(最大报文段长度)字节时,就组装成一个TCP报文段发送;第二种,发送方应用进程指明要求发送报文段;第三种,发送方的一个计时期限到了,就把当前已有 缓存数据并且<=MSS装入报文段发送出去。
④拥塞控制
- 满开始:由小到大逐渐增大拥塞窗口数值。
- 拥塞避免:为了防止拥塞窗口增长过大引起网络拥塞,设置慢开始门限。然后拥塞避免的算法思路就是让拥塞窗口缓慢增大,即每经过一个往返时间RTT就把发送方的拥塞窗口加一。
- 快速重传:接收方不要等待中积极发送数据的时候再进行对之前数据的捎带确认,而是收到数据立即发送确认。快重传算法规定:发送方一连收到三个重复的确认,就应当进行快重传。
- 快速恢复:当出现超时的时候,不启动慢开始,而是执行快恢复算法。发送方调整门限值=出现超时的cwnd(拥塞窗口)/2。
1.1.4TCP提供全双工通信
1.1.5面向字节流
流式服务的特点:TCP 字节流的特点,发送端执行的写操作次数和接收端执行的读操作次数之间没有任何数量关系,应用程序对数据的发送和接收是没有边界限制的。
1.2与TCP有关的面试问题
(1)为什么时三次握手,可不可以是两次握手,为什么?
如果是两次握手,那么如果出现这种情况:发送端发送请求连接报文,但是由于在网络中出现了滞留并没有按时到达接收端,等到一段时间发送端再次发送连接请求报文,接收端接收之后并发送确认连接。这样两次握手建立连接1。但是之前在网络中滞留的连接请求报文并没有丢失,于是发送给接收端,接收端误以为建立连接,于是就回复确认建立连接,所以此时又建立了连接2,但是发送端并不会给连接2发送数据,所以接收端一直处于等待,就会浪费接受端许多资源。
三次握手也可以是四次握手:接收端在回复确认建立连接报文的时候,将其分成两个报文段,一个是回复对发送端的连接确认,一个是发送自己的同步报文段。
(2)三次握手时可能出现什么攻击?
可以参考下面这篇文章:
TCP三次握手有哪些漏洞?
https://www.cnblogs.com/HuiH/p/12599048.html可能出现的攻击有三种:SYN flood的攻击,TCP全连接攻击,Land攻击。
(3)四次挥手的过程可以用三次完成吗?
关闭连接时,服务器端收到FIN报文,并不会立刻关闭SOCKET,先回复ACK报文,等到服务器端的所有报文都发送完了,才发送FIN报文。所以不能三次完成,将ACK和FIN不能放在一起发送。
(4)对于三次握手四次挥手的面试题,可以看看这个文章
面试官,不要再问我三次握手和四次挥手
https://zhuanlan.zhihu.com/p/86426969
(5)同一个端口可不可以被一个 TCP 和一个 UDP 的应用程序同时使用?
可以。原因是端口的唯一性标识是:端口号+协议名称。所以TCP和UDP的端口完全没有任何关系,协议内部端口号唯一。
追问:程序在连接到端口时,怎么知道此时从该端口进来的数据是tcp的还是udp的呢?
操作系统根据接收的IP数据包的首部内的8位协议来判断这是什么报文,从而直接交给相关的内核进程或者协议栈处理。
追问:一个端口是否可以绑定多个端口号?
可以。一个进程可以打开多个文件描述符,每个文件描述符对应一个端口号,所以一个进程可以绑定多个端口号。Linux会给每个socket分配一个唯一的文件描述符,通过这个文件描述符来区分对应的套接字。
追问:一个端口号是否可以被多个进程绑定?
不可以。但是在父子进程中可以实现多进程绑定一个端口号,因为子进程具有父进程的文件描述符副本,可以处理绑定到同样的端口上的连接
追问:一个端口可以同时连接多个TCP和多个UDP吗?
一个端口可以建立多个TCP连接,所谓的同一个端口是指服务器端的ip和port不变,但是只要客户端的ip和port不同就可以。一个端口同一时间只能绑定一个socket。UDP是面向无连接的,所以不存在多个UDP连接,只是服务端接收UDP数据需要绑定一个端口,一个socket只能绑定一个端口而已。
(如果还不是很清楚这方面的问题,可以参考下面几篇文章)
TCP和UDP使用同一端口通信
https://blog.csdn.net/szm1234/article/details/116994450一个端口号可以同时被两个进程绑定吗?
https://zhuanlan.zhihu.com/p/280672302#:~:text= 由上述结果可知:TCP、UDP可以同时绑定一个端口8888,但是一个端口在同一时刻不可以被TCP或者UDP绑定2次。,原因如下: TCP和UDP传输协议监听同一个端口后,接收数据互不影响,不冲突。快狗二面 一个端口可以 同时TCP 又UDP 吗?
https://cloud.tencent.com/developer/article/1813256
(6)同一个应用程序可以创建多个套接字吗?
端口是唯一的,系统中任一个端口只能被一个程序占用。一个程序可以创建多个Socket,但多个Socket是不能共用端口的。
(7)什么是 TCP 粘包,如何解决?
定义:指的是多个报文数据内容融合在一起被接受
解决方案:
①循环接收、发送;即就是一次send,一次recv……
②设置分割标志。
③在头部加上长度控制,然后读取的时候只读取头部信息中指定的长度。
(8)为什么UDP数据包不发生粘包,而TCP会出现粘包?
TCP协议是面向链接的,收发两端都必须要有成对的socket,因此发送端为了将多个发往接收端的包更有效的发送,使用了优化的方法nagle算法。
面向流的服务是没有消息保护边界的。
UDP协议是无连接,面向消息的,支持一对多的模式,所以接收端的套接字缓冲区采用链式结构记录每一个到达的UDP包。
面向消息的通信是由消息保护边界的。
(9)如果接收端填充的接收通告窗口为 0,发送端接下来怎么处理?
接收端通告的窗口大小变成0,发送端会发一个1字节的段,这一个字节段可以是下一字节的数据,如果没有新的数据段发送的时候,就发一个ack,强制接收端重新宣告下一个期望的字节和窗口大小。如果接收方回复窗口大小仍然为零,则发送方的探测定时器加倍。没有收到ACK时,发送探测包的最大次数之后连接超时。
(10)什么叫糊涂窗口综合征?
糊涂窗口综合症是指当发送端应用进程产生数据很慢、或接收端应用进程处理接收缓冲区数据很慢,或二者兼而有之;就会使应用进程间传送的报文段很小,特别是有效载荷很小; 极端情况下,有效载荷可能只有1个字节;传输开销有40字节(20字节的IP头+20字节的TCP头) 这种现象。
要解决这个问题,发送方要把数据累计成足够大的报文段,等到其到达接收方缓存区的一半大小,再发送报文。接收方等待一段时间,使得自己的接收缓存区中能够容纳一个最长的报文段或缓存区有一半空闲,然后再去发送确认报文。
(11)在 TCP 的实现中广泛使用的 Nagle 算法是什么?
若发送应用进程,把要发送的数据逐个字节的送到TCP的发送缓存,则发送方就把第一个数据字节先发送出去,把后面的数据字节都缓存起来。当发送方收到对第一个数据字符的确认后,再把发送缓存中的所有数据组装成一个发送报文段发送出去。
(12)TIME_WAIT 状态存在的原因?
①保证发送端发送的最后一个ACK报文段能够到达接收端,从而避免接收端因为收不到ACK报文段而不按照正常步骤进入CLOSED状态。
②使本链接持续的时间内所产生的所有报文都从网络中消失,避免下一个新连接中出现旧的连接请求报文段。
2.用户数据报协议UDP
2.1UDP协议的主要特点:
(1)UDP是无连接的,可以减少开销和发送数据之前的时延。
(2)UDP使用尽最大努力交付,不保证可靠交付,主机不需要维持复杂的连接状态表。
(3)UDP是面向报文的,一次交付一个完整的报文。
(4)UDP没有拥塞控制,因此网络出现的拥塞不会使得源主机的发送速率降低。
(5)UDP支持一对一、一对多、多对一、多对多的交互通信。
(6)UDP的首部开销小,只有八字节。
-
(16)TCP/IP协议簇中的主要协议及其主要用途
2021-11-26 14:16:32TCP/IP协议簇中的主要协议及其主要用途TCP/IP协议簇的组成:
TCP/IP协议簇是Internet的基础,也是当今最流行的组网形式。TCP/IP是一组协议的代名词,包括许多别的协议,组成了TCP/IP协议簇。
其中比较重要的有SLIP协议、PPP协议、IP协议、ICMP协议、ARP协议、TCP协议、UDP协议、FTP协议、DNS协议、SMTP协议等。TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
TCP/IP协议簇中的主要协议:
下面是协议层从底层至顶层的一个模型图:
互联网中常用的代表性的协议有IP、TCP、HTTP等,LAN中常用协议有IPX、SPX等
“计算机网络体系结构”将这些网络协议进行了系统的归纳;TCP/IP就是这些协议的集合
其中,还有Novell公司的IPX/SPX、苹果公司的AppleTalk(仅限苹果公司计算机使用)、IBM开发的用于构件大规模网络的SNA以及前DEC公司开发的DECnet等
SLIP协议
SLIP提供在串行通信线路上封装IP分组的简单方法,使远程用户通过电话线和MODEM能方便地接入TCP/IP网络。SLIP是一种简单的组帧方式,但使用时还存在一些问题。首先,SLIP不支持在连接过程中的动态IP地址分配,通信双方必须事先告知对方IP地址,这给没有固定IP地址的个人用户上INTERNET网带来了很大的不便。其次,SLIP帧中无校验字段,因此链路层上无法检测出差错,必须由上层实体或具有纠错能力MODEM来解决传输差错问题。
PPP协议
为了解决SLIP存在的问题,在串行通信应用中又开发了PPP协议。PPP协议是一种有效的点对点通信协议,它由串行通信线路上的组帧方式,用于建立、配制、测试和拆除数据链路的链路控制协议LCP及一组用以支持不同网络层协议的网络控制协议NCPs三部分组成。PPP中的LCP协议提供了通信双方进行参数协商的手段,并且提供了一组NCPs协议,使得PPP可以支持多种网络层协议,如IP,IPX,OSI等。另外,支持IP的NCP提供了在建立链接时动态分配IP地址的功能,解决了个人用户上INTERNET网的问题。
IP协议
即互联网协议(Internet Protocol),它将多个网络连成一个互联网,可以把高层的数据以多个数据包的形式通过互联网分发出去。IP的基本任务是通过互联网传送数据包,各个IP数据包之间是相互独立的。
ICMP协议
即互联网控制报文协议。从IP互联网协议的功能,可以知道IP 提供的是一种不可靠的无连接报文分组传送服务。若路由器或主机发生故障时网络阻塞,就需要通知发送主机采取相应措施。为了使互联网能报告差错,或提供有关意外情况的信息,在IP层加入了一类特殊用途的报文机制,即ICMP。分组接收方利用ICMP来通知IP模块发送方,进行必需的修改。ICMP通常是由发现报文有问题的站产生的,例如可由目的主机或中继路由器来发现问题并产生的ICMP。如果一个分组不能传送,ICMP便可以被用来警告分组源,说明有网络,主机或端口不可达。ICMP也可以用来报告网络阻塞。
ARP协议
即地址转换协议。在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网上传送,必须知道彼此的物理地址。这样就存在把互联网地址变换成物理地址的转换问题。这就需要在网络层有一组服务将 IP地址转换为相应物理网络地址,这组协议即ARP。
TCP协议
即传输控制协议,它提供的是一种可靠的数据流服务。当传送受差错干扰的数据,或举出网络故障,或网络负荷太重而使网际基本传输系统不能正常工作时,就需要通过其他的协议来保证通信的可靠。TCP就是这样的协议。TCP采用“带重传的肯定确认”技术来实现传输的可靠性。并使用“滑动窗口”的流量控制机制来提高网络的吞吐量。TCP通信建立实现了一种“虚电路”的概念。双方通信之前,先建立一条链接然后双方就可以在其上发送数据流。这种数据交换方式能提高效率,但事先建立连接和事后拆除连接需要开销。
UDP协议
即用户数据包协议,它是对IP协议组的扩充,它增加了一种机制,发送方可以区分一台计算机上的多个接收者。每个UDP报文除了包含数据外还有报文的目的端口的编号和报文源端口的编号,从而使UDP软件可以把报文递送给正确的接收者,然后接收者要发出一个应答。由于UDP的这种扩充,使得在两个用户进程之间递送数据包成为可能。我们频繁使用的OICQ软件正是基于UDP协议和这种机制。
FTP协议
即文件传输协议,它是网际提供的用于访问远程机器的协议,它使用户可以在本地机与远程机之间进行有关文件的操作。FTP工作时建立两条TCP链接,分别用于传送文件和用于传送控制。FTP采用客户/服务器模式?它包含客户FTP和服务器FTP。客户FTP启动传送过程,而服务器FTP对其作出应答。
DNS协议
即域名服务协议,它提供域名到IP地址的转换,允许对域名资源进行分散管理。DNS最初设计的目的是使邮件发送方知道邮件接收主机及邮件发送主机的IP地址,后来发展成可服务于其他许多目标的协议。
SMTP协议
即简单邮件传送协议互联网标准中的电子邮件是一个简单的基于文本的协议,用于可靠、有效地数据传输。SMTP作为应用层的服务,并不关心它下面采用的是何种传输服务,它可通过网络在TXP链接上传送邮件,或者简单地在同一机器的进程之间通过进程通信的通道来传送邮件,这样,邮件传输就独立于传输子系统,可在TCP/IP环境或X.25协议环境中传输邮件。
TCP/IP协议簇中的主要用途:
不同于OSI七层划分,TCP/IP划分为四层
数据链路层(一般在TCP/IP协议中,数据链路层和物理层统称你为网络接口层):
数据链路层是物理传输通道,可使用多种传输介质传输,可建立在任何物理传输网上。比如光纤、双绞线等网络层(Internet)协议包括:
(网络层:其主要功能是要完成网络中主机间“分组”(Packet)的传输。)
IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol)
控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向地址转换协议。
IP是网络层的核心,通过路由选择将下一条IP封装后交给接口层。IP数据报是无连接服务。
ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。
Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。
ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址。
RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站还有DHCP服务。传输层协议:
(传输层主要任务是向上一层提供可靠的端到端(End-to-End)服务,确保“报文”无差错、有序、不丢失、无重复地传输。它向高层屏蔽了下层数据通信的细节,是计算机通信体系结构中最关键的一层)
传输控制协议TCP(Transmission Control Protocol):TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯。
TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。用户数据报协议UDP(User Datagram protocol):UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象,实际应用中要求程序员编程验证。UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。应用层协议:
(应用层确定进程间通信的性质,以满足用户的需要。)
(应用层直接面向用户,是OSI中的最高层。它的主要任务是为用户提供应用的接口,即提供不同计算机间的文件传送、访问与管理,电子邮件的内容处理,不同计算机通过网络交互访问的虚拟终端功能等。)
FTP(File Transfer Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口是20H,控制端口是21H。
Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。
DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换,使用端口53。
SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中转,使用端口25。
NFS(Network File System)是网络文件系统,用于网络中不同主机间的文件共享。
HTTP(Hypertext Transfer Protocol)是超文本传输协议,用于实现互联网中的WWW服务,使用端口80。 -
使用Wireshark抓包分析TCP协议
2022-04-17 10:04:06这一层用到了TCP协议 tcp包头 每个字段对应的TCP包头 TCP握手过程分析 TCP三次握手示意图 第一次握手:客户端向服务器发送一个SYN段(表示发起连接请求),并且包含客户端的一个初始序列号seq。 第二次...wireshark数据包详细栏每个字段对应的分层。
1、分层介绍
1.1、数据链路层
我们点开这个字段,从该字段中可以看到相邻两个设备的MAC地址
1.2、网络层
本层主要负责将TCP层传输下来的数据加上目标地址和源地址。
1.3、传输层
这一层用到了TCP协议
tcp包头
每个字段对应的TCP包头
2、TCP握手过程分析
TCP三次握手示意图
第一次握手:客户端向服务器发送一个SYN段(表示发起连接请求),并且包含客户端的一个初始序列号seq=0
第二次握手:服务端返回一个ACK(对客户端连接请求的应答)+SYN(表示服务端发起连接请求),并且包含服务端的一个初始序列号seq=0,同时返回一个确认号ack=1
第三次握手:客户端给服务端返回一个ACK(对服务端连接请求的应答),并更新自己的序列号seq=1,返回一个确认号ack=1
Wireshark分析握手过程
这是我发起连接请求后抓到的数据包
第一次握手:
可以看到,客户端发起一个SYN请求,初始序列号为0
第二次握手
服务端返回SYN+ACK,并且包含服务端的一个初始序列号seq=0,同时返回一个确认号ack=1
第三次握手
客户端返回一个ACK,并且返回一个确认号ack=1,并且将自己的序列号seq更新为1
到此,TCP三次握手就结束了。客户端与服务端之间已经成功建立起连接。
3、TCP数据传输过程分析
我们常说TCP是可靠性的传输协议,那么它是如何实现可靠性的数据传输呢,就是通过序列号和确认应答提高可靠性。
我们从客户端往服务端发送了两次数据,第一次发送了一个字符串"hello",第二次发送了一个字符串"word"。首先客户端发送“hello”时,初始序列号seq为1,服务端接收到数据后,会给一个应答,表示我已经收到了消息,并且这个应答号ack = seq + “接收到的数据长度”,客户端再继续发送时,序列号更新为服务端的应答号的值。
下面我们就抓包看下这个过程。
客户端分别向服务器发送了两次消息,第一次发送了一个字符串“hello”,第二次发送了字符串"word"。
我先从客户端往服务器发送一个字符串 "hello",我们可以看下,大小为6个字节。
可以看下初始序列号seq为1
然后看下服务器返回了什么,服务器作了一个应答ack=7,表示接受到了客户端的信息
再看下第二次发送字符串"word"的情况,序列号seq更新为上一次服务端的应答号ack,变为7
看下服务端的应答,确认号ack为12
4、TCP四次挥手分析
TCP四次挥手示意图
第一次挥手:客户端发起一个FIN,表示客户端希望断开连接。
第二次挥手:服务端返回一个ACK,表示对客户端断开请求的应答。
第三次挥手:服务端发起一个FIN,表示服务端希望断开连接。
第四次挥手:客户端返回一个ACK,表示对服务端断开请求的应答。
理论上挥手是需要四次的,但抓包分析时,只抓到了三次挥手过程,第二次握手和第三次握手合并为一次了。
第一次挥手
客户端发起一个FIN请求(表示客户端希望断开连接),序列号seq=12,应答号ack=23。注意这里的应答是上一次数据通信过程中的应答。
第二次,第三次挥手
服务端返回一个ACK(表示对客户端断开请求的应答) + FIN(表示服务端希望发起断开请求),应答号ack=13,序列号seq=23
第四次挥手
客户端返回一个ACK(表示对服务端断开请求的应答),应答号ack=24,序列号seq=13
-
TCP 协议(包含三次握手,四次挥手)
2022-01-04 18:08:48TCP 特性1.确认应答 (可靠传输的最核心机制) 1.确认应答 (可靠传输的最核心机制) 可靠传输的最核心机制 -
ftp服务器默认的tcp端口号
2021-08-09 02:08:52ftp服务器默认的tcp端口号 内容精选换一换OBSBrowser+是一款用于访问和管理对象存储服务的图形化工具,支持通过配置内网DNS服务器地址的方式,使在华为云上的Windows ECS通过内网直接访问OBS,下面将介绍具体其操作... -
OSI与TCP/IP各层的结构与功能,都有哪些协议
2017-04-04 11:06:02前言: ...这样的大公司面试的话,TCP/IP知识也是必不可少的。 七层协议的体系结构 OSI的七层体系结构概念清楚,理论也很完整,但是它比较复杂而且不实用。在这里顺带提一下之前一直被一些大... -
太厉害了,终于有人能把TCP/IP 协议讲的明明白白了
2020-05-07 09:30:15OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。 二、 TCP/IP 基础 1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为... -
TCP/IP网络协议详解
2021-03-30 18:54:59一、 计算机网络体系结构分层 一图看完本文 计算机网络体系结构...从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 I. -
基于TCP或UDP的应用层协议有哪些?——Linux网络编程
2019-10-15 14:38:36一、基于TCP的应用层协议有:SMTP、TELNET、HTTP、FTP 基于UDP的应用层协议:DNS、TFTP(简单文件传输协议)、RIP(路由选择协议)、DHCP、BOOTP(是DHCP的前身)、IGMP(Internet组管理协议) ... -
vue使用mqtt,tcp协议头的坑
2022-02-15 14:34:44vue使用mqtt遇到的tcp变ws坑 -
基于TCP和UDP的常见协议
2021-05-12 17:51:07基于TCP或UDP的应用层协议 -
TCP/IP协议学习总结
2021-10-28 11:37:44TCP/IP协议学习总结网络基础知识连接人与人的计算机网络协议随处可见的协议协议的必要性计算机中的协议分组交换协议协议分层与OSI参考模型协议的分层OSI参考模型OSI协议与OSI参考模型OSI参考模型中各个分层的作用7层... -
tcp协议通过什么来区分不同的连接
2021-08-10 08:36:10tcp协议通过IP地址+端口号来区分不同的连接,TCP/IP是一个协议集,为应用提供一些“低级”功能,这些包括IP、TCP、UDP。TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一种... -
TCP协议与UDP协议的区别
2020-08-21 10:04:01TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UDP协议与TCP/IP协议的联系,很多人犯糊涂了, 一直都是说TCP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! TCP/IP协议是一个协议簇。里面包括... -
TCP/IP协议栈常用协议及功能
2020-02-11 16:24:47TCP/IP协议栈常用协议及功能 -
使用JMeter测试TCP协议
2020-07-17 16:10:04本文主要介绍如何使用JMeter对TCP协议进行测试 1、TCP概念 2、TCP协议的三次握手 3、TCP取样器参数介绍 4、Wireshark抓包和开发TCP脚本 一、TCP概念 TCP(Transmission Control Protocol 传输控制协议)是一种面向... -
网络协议基础TCP/IP-http协议
2017-07-26 20:16:40TCP头格式TCP协议中的三次握手和四次挥手TCP报文抓取工具 三、HTTP(HyperText Transfer Protocol,超文本传输协议) 请求报文结构请求报文样例请求报文参数详解响应报文结构响应报文样例响应报文参数详解HTTP... -
互联网协议 — TCP — 性能问题解析
2021-07-10 22:22:36TCP 在设计之初没有考虑到现今复杂的网络环境,当你在地铁上或者火车上被断断续续的网络折磨时,你可能都不知道这一切可能都是 TCP 协议造成的。 在网络通信中,从发送方发出数据开始,到收到来自接收方确认的时间被... -
常用互联网协议之TCP/IP协议
2019-03-26 11:38:11一般来说,TCP/IP是利用IP进行通信时所必须用到的协议群的统称。 具体点,IP或ICMP、TCP或UDP、TELENT或FTP、以及HTTP等都属于TCP/IP协议,而TCP/IP一词泛指这些协议,有时称它们为TCP/IP为网际协议族/TCP/IP协议族... -
TCP协议与UDP协议
2019-02-19 19:30:54首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中... -
【笔记 】深入理解 TCP 协议:从原理到实战
2021-11-10 20:08:46TCP概述-可靠的、面向连接的、基于字节流、全双工的协议TCP 是面向连接的协议三次握手TCP 协议是可靠的TCP 是面向字节流的协议TCP 是全双工的协议小结与思考packetdrill-google协议栈测试神器-TODO详解tcp基石-剖析... -
计算机网络五层协议(TCP/IP)与七层协议(OSI)的关系与区别【计算机网络】
2022-01-29 22:40:08I.TCP/IP五层协议栈 II.七层OSI协议栈模型 III.联系与区别 I.TCP/IP五层协议栈 首先介绍最广为流传的五层TCP/IP协议栈: 1️⃣应用层:OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户... -
使用TCP协议的穿透技术
2019-05-13 14:13:36其实很早我就已经实现了使用TCP协议穿透NAT了,但是苦于一直没有时间,所以没有写出来,现在终于放假有一点空闲,于是写出来共享之。 一直以来,说起NAT穿透,很多人都会被告知使用UDP打孔这个技术,基本上没有人... -
逆向分析某App TCP私有协议并实现数据的批量抓取
2022-01-05 22:04:53分析Android全局Java obfuscator,分析TCP私有协议,编写socket脚本实现数据抓取 -
网络协议之TCP/IP协议(面试必考内容) - javaEE初阶 - 细节狂魔
2022-04-15 15:28:21文章目录前言TCP/IP协议应用层常见的几种的协议模板xmljsonProtobuffer小结总结传输层UDPUDP协议端格式网络层数据链路层硬件层 前言 前面讲的 IO 和 网络初识,比较基础和简单,只是让大家喘口气。。。 网络socket... -
TCP/IP协议栈详解
2018-12-17 20:37:11其中涉及到数据的封装,传输,寻址等一系列内容,是计算机领域非常重要的基础知识,我们在Java中用到的Socket通信就是基于TCP/IP协议中的TCP协议,开发为一系列封装好的API供用户使用。为什么要制定这些协议呢?这些... -
tcp/ip协议详解
2021-06-03 15:50:50tcp/ip 四层模型,从上到下依次是应用层,传输层,网络层,网络接口层(数据链路层) http协议请求格式: 1. 请求行: 请求行包括请求方法、URL、协议版本,它们之间用空格分隔(所以我们输入的 URL ... -
TCP自定义通信协议
2018-04-12 07:29:19Tcp 服务端自定义协议,客户端解析协议的处理 我们想想,为什么要定义协议: 回答:因为我们在传输的过程中会出现分包(没有接受到一个完整的包)与黏包(收到比一包多的数据,除去完整的一包,首尾有数据)的问题...