网站如何做下载文档,重庆网站建设公司模板,中铁建设门户网登录初始密码,个人网页策划书一 协议的概念 从应用的角度出发#xff0c;协议可理解为“规则”#xff0c;是数据传输和数据的解释的规则。 典型协议
传输层 常见协议有TCP/UDP协议。
应用层 常见的协议有HTTP协议#xff0c;FTP协议。
网络层 常见协议有IP协议、ICMP协议、IGMP协议。
网络接口层 常…一 协议的概念 从应用的角度出发协议可理解为“规则”是数据传输和数据的解释的规则。 典型协议
传输层 常见协议有TCP/UDP协议。
应用层 常见的协议有HTTP协议FTP协议。
网络层 常见协议有IP协议、ICMP协议、IGMP协议。
网络接口层 常见协议有ARP协议、RARP协议。
TCP传输控制协议Transmission Control Protocol是一种面向连接的、可靠的、基于字节流的传输层通信协议。
UDP用户数据报协议User Datagram Protocol是OSI参考模型中一种无连接的传输层协议提供面向事务的简单不可靠信息传送服务。
HTTP超文本传输协议Hyper Text Transfer Protocol是互联网上应用最为广泛的一种网络协议。
FTP文件传输协议File Transfer Protocol
IP协议是因特网互联协议Internet Protocol
ICMP协议是Internet控制报文协议Internet Control Message Protocol它是TCP/IP协议族的一个子协议用于在IP主机、路由器之间传递控制消息。
IGMP协议是 Internet 组管理协议Internet Group Management Protocol是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。
ARP协议是正向地址解析协议Address Resolution Protocol通过已知的IP寻找对应主机的MAC地址。
RARP是反向地址转换协议通过MAC地址确定IP地址。 OSI七层模型 物理层主要定义物理设备标准如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流就是由1、0转化为电流强弱来进行传输到达目的地后再转化为1、0也就是我们常说的数模转换与模数转换。这一层的数据叫做比特。数据链路层定义了如何让格式化数据以帧为单位进行传输以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正以确保数据的可靠传输。如串口通信中使用到的115200、8、N、1网络层在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加而网络层正是管理这种连接的层。传输层定义了一些传输数据的协议和端口号WWW端口80等如TCP传输控制协议传输效率低可靠性强用于传输可靠性要求高数据量大的数据UDP用户数据报协议与TCP特性恰恰相反用于传输可靠性要求不高数据量小的数据如QQ聊天数据就是通过这种方式传输的。 主要是将从下层接收的数据进行分段和传输到达目的地址后再进行重组。常常把这一层数据叫做段。会话层通过传输层(端口号传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求设备之间需要互相认识可以是IP也可以是MAC或者是主机名。表示层可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如PC程序与另一台计算机进行通信其中一台计算机使用扩展二一十进制交换码(EBCDIC)而另一台则使用美国信息交换标准码ASCII来表示相同的字符。如有必要表示层会通过使用一种通格式来实现多种数据格式之间的转换。应用层是最靠近用户的OSI层。这一层为用户的应用程序例如电子邮件、文件传输和终端仿真提供网络服务。 TCP/IP四层模型
TCP/IP网络协议栈分为应用层Application、传输层Transport、网络层Network和链路层Link四层。如下图所示 通信过程
两台计算机通过TCP/IP协议通讯的过程如下所示 上图对应两台计算机在同一网段中的情况如果两台计算机在不同的网段中那么数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器如下图所示 TCP是一种面向连接的、可靠的协议有点像打电话双方拿起电话互通身份之后就建立了连接然后说话就行了这边说的话那边保证听得到并且是按说话的顺序听到的说完话挂机断开连接。也就是说TCP传输的双方需要首先建立连接之后由TCP协议保证数据收发的可靠性丢失的数据包自动重发上层应用程序收到的总是可靠的数据流通讯之后关闭连接。
UDP是无连接的传输协议不保证可靠性有点像寄信信写好放到邮筒里既不能保证信件在邮递过程中不会丢失也不能保证信件寄送顺序。使用UDP协议的应用程序需要自己完成丢包重发、消息排序等工作。 目的主机收到数据包后如何经过各层协议栈最后到达应用程序呢其过程如下图所示 以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷payload指除去协议首部之外实际传输的数据是IP、ARP还是RARP协议的数据报然后交给相应的协议处理。假如是IP数据报IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP然后交给相应的协议处理。假如是TCP段或UDP段TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。IP地址是标识网络中不同主机的地址而端口号就是同一台主机上标识不同进程的地址IP地址和端口号合起来标识网络中唯一的进程。
虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧但是从功能上划分ARP和RARP属于链路层IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报但是从功能上划分ICMP、IGMP与IP同属于网络层TCP和UDP属于传输层。 协议格式
数据包封装
传输层及其以下的机制由内核提供应用层由用户进程提供后面将介绍如何使用socket API编写应用程序应用程序对通讯数据的含义进行解释而传输层及其以下处理通讯的细节将数据从一台计算机通过一定的路径发送到另一台计算机。应用层数据通过协议栈发到网络上时每层协议都要加上一个数据首部header称为封装Encapsulation如下图所示 不同的协议层对数据包有不同的称谓在传输层叫做段segment在网络层叫做数据报datagram在链路层叫做帧frame。数据封装成帧后发到传输介质上到达目的主机后每层协议再剥掉相应的首部最后将应用层数据交给应用程序处理。 自己的理解和分析 我们从包裹的最后一段开始分析红色部分的分析 以太网帧格式
以太网的帧格式如下所示 ARP数据报的格式如下所示 举例 IP段格式 位置处于这里 一共20个字节
重要概念是
版本就是IPV4/IPV6
TTLtime to live 表示在路由节点最大数每经过一个路由节点TTL减1当TTL为0的时候还没有到达目的网络则网络丢弃该数据包。所以TTL的本质是设置数据包在路由节点中的跳转上限。TTL封装在 IP协议中的。 源IP 32 位---4字节 192.168.1.200---点分十进制的显示形式本质上是string要在网络上传输需要转化成二进程
目的IP 32 位---4字节 192.168.1.200---点分十进制的显示形式本质上是string要在网络上传输需要转化成二进程 TCP 数据包格式
位置处于这里 内容如下
TCP 的大小最小为20个字节
最大为60个字节在有“选项”的情况下选项占用4-40个字节 TCP通信时序
下图是一次TCP通讯的时序图。TCP连接建立断开。包含大家熟知的三次握手和四次握手。 第一次客户端开始连接
SYN,1000(0),mss 1460 SYN 是专门用来建立通信的标志位 1000 是包号一般这个包号是从0开始但是当前的图是从1000开始 0表示这个包所携带的数据的大小为0因为这一条是专门建立通信的因此这个包所携带的数据的大小肯定是0. mss 1460的意思是告诉对方我所能接受的最大段大小。为啥是1460参见以太网帧格式 中最全的格式下是1500字节然后有20字节的IP首部20字节的TCP首部 第二次服务器端开始连接
SYN,8000(0),ACK 1001mss 1024
SYN 表示服务器端要和客户端建立连接SYN是专门建立通信的表示位。
8000 是服务器端的包号
0表示服务器端带的数据大小是0
ACK 表示服务器同一和客户端建立连接
1001 表示客户端发送的1001号前的数据包我都收到了。
mss 1024 告诉对方自己所能接受的最大段大小。