tcpip协议的一切相关

prayjourney prayjourney     2023-04-16     698

关键词:

五层模型和数据格式

技术图片

各层作用和协议

技术图片

应用层:

作用:通过应用进程间的交互去完成指定的网络应用。
协议:应用进程间的通信和交互规则。
三大协议:DNS(域名系统),HTTP协议(万维网),SMTP(电子邮件)
报文:应用层交互的数据单元。

运输层:

作用:负责不同主机进程间通信,并且为这样的通信提供通用的(通用的:指不针对某一特定的网络应用进程,多种网络应用进程可以使用同一个运输层服务)数据传输服务

  • 复用:多个应用层进程同时使用下面的运输层服务
  • 分用:和复用相反,是运输层把收到的信息分别交给应用层相对应的进程

传输层的两种协议:传输控制协议TCP(提供面向连接,可靠的数据传输服务)和用户数据协议UDP(提供无连接,尽最大努力的数据传输服务,不保证数据传输的可靠性)

网络层:

作用:选择合适的网间路由和交换结点,确保数据及时传送。
过程:在TCP/IP体系结构中,使用IP协议做数据传输时,将报文或用户数据报封装成分组(分组:笼统的数据单元,也称IP数据报)和包进行传送
注意:这里的网络二字不再是我们平时所说的网络,而是说的计算机网络体系里面一个层次的名称。
互联网:由大量的异构网络通过路由器相互连接起来的。使用网络层协议是无连接的网际协议和许多路由协议,因此互联网的网络层也叫做网际层或IP层

链路层:

作用:在网络层选好的链路进行数据传输的过程中,为这些数据提供一段一段链路间的专门协议。
过程:发送数据时,将网络层交下来的IP数据报封装成桢(每一帧包含有数据和控制信息(同步信息,地址信息,差错控制));接收数据时,提取每一帧的数据部分上交给网络层,没用或重复的信息丢弃(由数据帧控制信息决定)。

物理层:

作用:实现计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。

协议与Socket

技术图片

通过上图,我们可以回顾TCP/IP体系的5(4)层架构,与各个层运行的主要的协议,从上面看还不太清楚,可以看下面,HTTP对应应用层TCP对应传输层,HTTP高于TCP,这就说明TCP协议是为HTTP协议服务的,实际上也是如此,TCP协议为HTTP提供可靠交付的协议,需要说明的是HTTP协议是基于TCP服务的,没有基于UDP的版本。 进一步,还可以看出的是,IP协议对应于网络层,在TCP协议之下,因此IP协议为TCP协议提供服务,IP协议本身是一个尽力交付的协议,但是配合ICMP(英特网报文控制协议),就可以提供可靠交付的服务。

技术图片

但是上图没有体现出Socket的概念,其实Socket是一个抽象出来的概念,其目的在于方便我们对于TCP或者UPD传输协议的使用,是面向于编程语言层级的,位于应用层(HTTP)与传输层(TCP)"之间",方便编程的使用。HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是车轮,提供了通信的驱动力,TCP是发动机,提供了原始的通信能力。

名称 层次 作用 备注
HTTP 应用层 超文本传输协议(HTTP,HyperText Transfer Protocol)是运行于应用层的网络协议。所有的WWW文件都必须遵守这个标准。 我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如 果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也 可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上
SOCKET --- Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,++它把复杂的TCP/IP协议族隐藏在Socket接口后面++,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议 虚拟概念,Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),++通过Socket,我们才能使用TCP/IP协议++。 实际上,Socket跟TCP/IP协议没有必然的联系,Socket编程接口在设计的时候,就希望也能适应各种的网络协议
TCP 传输层 TCP(Transmission Control Protocol) 传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议 TCP/UDP协议通过设计++封装形成了以供编程使用的*Socket套接字++
UDP 传输层 提供无连接的尽力交付的服务 和HTTP协议无关
IP 网络层 为TCP和UDP协议提供服务 不可靠的,但是其服务的TCP是可靠服务,通过ICMP等协议来完成可靠性的保证

TCP 报文

TCP封装在IP报文中的时候,如下图所示,TCP头紧接着IP头(IPV6有扩展头的时候,则TCP头在扩展头后面),不携带选项(option)的TCP头长为20bytes,携带选项的TCP头最长可到60bytes。

技术图片

TCP 报文头

我们首先要了解 TCP 报文组成,根据 TCP 报文组成格式,重点了解几个重要的字段有助于我们在后面分析 TCP/IP 报文。

技术图片

上图中有几个字段需要重点介绍下:①序号:Seq 序号,占 32 位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。②确认序号:Ack 序号,占 32 位,只有 ACK 标志位为 1 时,确认序号字段才有效,Ack=Seq+1。③标志位:共 6 个,即 URG、ACK、PSH、RST、SYN、FIN 等,具体含义如下:a.URG:紧急指针(urgent pointer)有效。b. ACK: 确认序号有效。c. PSH: 接收方应该尽快将这个报文交给应用层。d. RST: 重置连接。e. SYN: 发起一个新连接。f. FIN: 释放一个连接。注意:

  • 不要将确认序号 Ack 与标志位中的 ACK 搞混了
  • 确认方 Ack=发起方 Req+1,两端配对。

TCP 的状态

在TCP层,有个FLAGS字段,这个字段有以下几个标识:

l SYNFINACKPSHRSTURG

字段 含义
SYN 表示建立连接,Synchronous,是TCP/IP建立连接时使用的握手信号
FIN 表示关闭连接,Finish,是结束信号,表示将要关闭连接)
ACK 表示响应,Acknowledgement,是确认信号,表示发来的数据已确认接收无误
PSH 表示有 DATA数据传输
RST 表示连接重置

三次握手建立连接

TCP协议是如何保证可靠性的呢?就是通过三次与目标设备的通信来确定数据包发送成功。以浏览器和服务器的通信来打比方:

浏览器:你好服务器,我是 浏览器A。
服务器:你好 浏览器A,我是 服务器B。
浏览器:服务器B 你好。

技术图片

过程解释

  • 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
  • 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
  • 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

图片中的Seq(Sequence number(顺序号码))随机产生,用来表明顺序

四次挥手断开连接

当数据包发送完毕需要断开连接的时候,就需要TCP的四次挥手来保证链接的合理断开。再次以浏览器和服务器的通信打比方:

主动结束方:你好,我的数据发送完毕了,我要进入准备断开的状态了。(此时它虽然不再发送数据了,但是可以接受数据
另一方:我知道了,我还没有发送完毕的,你等着吧。
另一方:我也发送完毕了,可以断开链接了。(此时它也进入准备断开的状态) 主动结束方:好的,那断开吧。

技术图片

过程解释

  1. 客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
  2. 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
  3. 服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
  4. 客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。

TCP为什么建立链接是三次,关闭链接是四次?

连接时:因为服务端的listen状态下的socket当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送
关闭时当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可能未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了所以它这里的ACK报文和FIN报文多数情况下都是分开发送的
也就是说,关闭的时候,会先回复一个收到消息,然后回复一个断开连接,这本来在握手的步骤之中可以一步做完的,在关闭的时候分了两步去做,为什么这么做,是因为断开的时候,可能是还有数据在传输,而握手的时候,没有数据需要额外的传输

tcpip协议分为哪几层

...考技术A网络接口层、网际层、传输层和应用层。TCPIP传输协议,即传输控制网络协议,也叫做网络通讯协议。它是在网络使用中最基本的通信协议。TCPIP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且TCPIP传... 查看详情

tcpip协议笔记——简单介绍

...后自己所写的总结,权当是书后复习。一.为什么会有tcpip协议      我们知道中国有56个民族。各个民族有各自的语言,语言就形成了各个民族的障碍。大家都说自己的语言,谁也听不懂对方在讲什么,语言... 查看详情

tcpip网络协议层对应的rfc文档

原文地址:TCPIP网络协议层对应的RFC文档作者:西木RFC-RequestForComments 请求注解TCP/IP层网络协议RFC文档PhysicalLayer DataLinkLayerARP  - AddressResolutionProtocolRFC826   ( EN CN&nbs 查看详情

lwiptcpip_input函数解析(协议栈入口)

收录于:【LWIP】LWIP协议|相关知识汇总|LWIP学习笔记索引:(*input)().->.tcpip_input().->.ethernet_input()........................................->.ip_input()相关链接:【LWIP】tcpip_input函数解析(协议栈入口)【L 查看详情

011-通过网络协议解析网络请求-dns-arp-tcpip

一、概述1.1、tcp/ip概述  TCP/IP不是一个协议,而是一个协议族的统称。里面包括IP协议、IMCP协议、TCP协议。跨越了多层模型的多层  TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用层,这里面有http,ftp,等等我们... 查看详情

tcpip渊源

tcp/ip协议群应用协议(http;smtp;ftp;telnet;snmp)传输协议(tcp;udp)网际协议(ip;icmp;arp)路由控制协议(rip;ospf;bgp)tcp/ip标准化精髓IETF(组织)RFC(标准) 查看详情

tcpip协议

TCP/IP协议族TCP/IP是internet最基本的协议,整个协议族是由很多个协议共同组成的。TCP协议负责数据的准确性和完整性,在发现传输数据过程中出现问题,可以要求重新传输,保证能够完整并正确的发送到目的地。IP则是给internet的... 查看详情

it-tcpip协议

todo使用tcpdump抓包和wireshark分析分析tcp包分析IP包分析http包-tcpiphttp包分析tcptcp包分析 查看详情

tcpip协议栈的心跳丢包重传连接超时机制实例详解(代码片段)

目录1、问题概述2、TCPIP协议栈的心跳机制2.1、TCP中的ACK机制2.2、TCPIP协议栈的心跳机制说明2.3、修改TCPIP协议栈的默认心跳参数3、libwebsockets开源库中的心跳机制使用的就是TCPIP协议栈的心跳机制4、TCPIP丢包重传机制5、使用非阻... 查看详情

centos网络管理tcpip协议栈

OSI模型的七层结构层中文名称英文名称速记描述PDU中文PDU英文7应用层application网络进程访问应用层为应用程序进程提供网络服务提供身份验证消息message6表示层presention数据表示确保接收系统可以读出该数据格式化数据构建数据协... 查看详情

tcpip四层模型是啥

参考技术A详情如下:四层协议TCP/IP是一组用于实现网络互连的通信协议。Internet网络体系结构以TCP/IP为核心。基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络访问层、网际互联层(主机到主机)、传输层、和应用层... 查看详情

tcpip协议及配置

参考技术ATCP/IP协议最广泛支持的通信协议集合,包括大量Internet应用中的标准协议支持跨网络架构、跨操作系统平台的通信逐级之间通信的三个要素IP地址子网掩码 IP路由IP地址(IPaddress)  标识一台计算机地址组成(... 查看详情

[java网络编程一]tcpip协议介绍

千磨万击还坚劲,任尔东西南北风。———郑板桥《竹石》竹子任凭风雨的打击磨砺,依然不改坚劲本色。TCP/IP参考模型看完并发编程,接着继续看Java网络编程,不要停!下面是OSI参考模型和TCP/IP参考模型的... 查看详情

浅谈tcpip协议栈ip协议解析

...对于网络的几个基础概念有个大概的了解,简单点说整个协议栈就是在做一件事,规定网络报文(网络传输中的数据报)的发送和接收,而整个协议栈内的协议,也是可以分为之前介绍过的链路层-》网络层-》传输层-》应用层,... 查看详情

《tcpip详解卷一》:150行代码拉开协议栈实现的篇章

《tcpip详解卷一》:150行代码拉开协议栈实现的篇章|udp协议、icmp协议、netmap原理、mmap原理、柔性数组、字节对齐、协议栈实现专注于服务器后台开发,包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redisÿ... 查看详情

20tcpip网络协议基础入门--ip网际协议

参考技术AIP数据报:IP协议位于网络层,它是TCP/IP协议族中最为核心的协议,所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。IP协议提供的是不可靠、无连接的数据报传送服务。我们已经知道了IP协议提供的数据传送服务是... 查看详情

浅谈tcpip协议栈入门知识

...missionControlProtocol/InternetProtocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP定义了电子设备如何连入... 查看详情

一网打尽tcpip面试那些问题(代码片段)

...过加自己的包头,服务端每层拆包。假设应用层是http协议传输数据经过传输层,传输层的作用一般就是确定端口,加上TCP信息的包头经过IP层,IP层就是确定对端的IP地址的,加上IP信息的包头经过网络接口层&#... 查看详情