-
网络基础2-应用层,传输层,网络层,数据链路层及其相关协议
2019-08-16 21:27:35应用层——HTTP协议 URL:平时俗称的“网址”就是URL。 像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现. 比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义 转义...应用层——HTTP协议
URL:平时俗称的“网址”就是URL。
像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现.
比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义
转义的规则如下: 将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY 格式("+" 被转义成了 “%2B”)。
HTTP协议格式
HTTP请求:
首行: [方法] + [url] + [版本]
Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束Body: 空行后面的内容都是Body.
Body允许为空字符串. 如果Body存在, 则在Header中会有一个ContentLength属性来标识Body的长度.
HTTP响应:
首行: [版本号] + [状态码] + [状态码解释]
Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个ContentLength属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在body中.
最常用的HTTP方法是GET方法和POST方法
HTTP的状态码:2xx访问成功,3xx重定向,4xx客户端错误,5xx服务器错误
最常见的状态码, 比如 200(OK), 404(Not Found), 403(Forbidden), 302(Redirect, 重定向), 504(Bad Gateway)传输层——负责数据能够从发送端传输接收端,UDP协议
只需要关注发送者和接收者就可以了,中间传输过程一概不管
端口号:Port,标识了一个主机上进行通信的不同的应用程序
端口号范围划分:
0 - 1023: 知名端口号, HTTP, FTP, SSH等这些广为使用的应用层协议, 他们的端口号都是固定的.
1024 - 65535: 操作系统动态分配的端口号. 客户端程序的端口号, 就是由操作系统从这个范围分配的.
有些服务器是常用的, 为了使用方便, 便约定一些常用的服务器,使用固定的端口号:
ssh服务器——使用22端口
ftp服务器——使用21端口
telnet服务器——使用23端口
http服务器——使用80端口
https服务器——使用44端口
两个协议都是全双工(双向通信)
UDP协议
UDP 比较简单:无连接,不可靠,面向对象,传输效率更高一些
TCP协议——传输控制协议
TCP 比较复杂:有连接,可靠传输 发送者可以感知到失败,面向字节流
1.可靠传输
2.尽可能提高传输机制
连接管理机制:在正常情况下, TCP要经过三次握手建立连接, 四次挥手断开连接
三次握手
一来一回中间2个可以合并.
状态变化:
1.LISTEN状态(服务器):手机打开,信号良好
2.ESTABLISHED(客户端/服务端):电话拨通对方接听了
四次挥手
双方各自向对方发送FIN,在各自向对方发送ACK,中间的两次交互可以合并。
状态变化:
1.CLOSE_WAIT:收到第一个FIN的的一方进入CLOSE_WAIT,是为了等待代码中调用关闭方法如果你发现有大量CLOSE_WAIT,是因为有bug,没有调用close方法
2.TIME_WAIT:主动断开连接的一方进入TIME_WAIT状态,存在的意义是一旦最后一个ACK丢包,可以有机会重传
TIME_WAIT存在一定时间,在超出这个时间之后,TIME_WAIT状态才会真正消失,释放对应链接
滑动窗口
窗口的含义:不等待ACK的情况下最多发多少数据
滑动的含义:每次收到ACK的同时,就继续往后发下一组数据
窗口越大,传输效率越高
窗口也不能无限大,过大影响可靠性
滑动窗口如果丢包,采用快速重传的方式来进行重传,快速重传本质就是超时重传,只传送真正丢包的数据
流量控制
窗口越大,传输效率越高,不能无限大,太大可能接收端处理不过来
如果生产速度超度了消费速度,接收缓冲区的内容越积越多,达到一定程度缓冲区满了,再有数据传输就会丢包
使用接收缓冲区空余空间大小,用这个指标衡量接收端处理能力,通过这个指标来控制发送端的窗口大小(发送速度)
使用接收缓冲区空余空间大小,作为TCP协议报头的窗口大小,这个值就是发送端滑动窗口大小的一个建议值
阻塞控制
窗口不能无限大,即使接收端处理速度很快,也可能因为网络环境不佳导致数据丢包
最终的滑动窗口大小是由 流量控制和 拥塞控制 共同决定的
拥塞窗口:拥塞控制机制所建议的窗口大小,从一个较小的数字开始,如果网络畅通,放大窗口大小,如果网络丢包,缩小
滑动窗口的最终值就是流量控制窗口和拥塞窗口的较小值
慢开始:刚开始传输时拥塞窗口设置的小一些
延时应答提高传输效率
在可靠性基础上,尽量提高窗口大小
和滑动窗口以及流量控制相关,流量孔子需要在ACK中反馈接受缓冲区剩余的空间的大小,此时采用策略
捎带应答
建立在延时应答的基础上,内核反馈ACK实际和程序反馈响应的时机合二为一,通过同一个数据报告同时带上两方面的信息
面向字节流
粘包问题:由于面向字节流读取数据方式没有具体的约定,很难直接获取到一个完整的应用层数据报
解决只能从应用层入手:只要在应用层协议设定的时候,明确包的界限就可以了
1.指定分隔符
2.指定包的长度
异常情况
1.程序异常结束(没啥影响,四次挥手完成)
2.系统关机
3.主机掉电/拔网线(a掉电的是接收方,发送方触发超时重传,尝试重新建立连接,彻底释放连接
b掉电的是发送方,接送方如果一直收不到数据,达到一定时间之后,就会给对方发送一个“心跳包”,如果没有心跳了,就会重新建立连接,如果建立失败,彻底释放连接)TCP和UCP 对比
1.需要可靠传输,优先考虑TCP
2.传输的单个数据比较大,优先考虑TCP
3.对性能要求很高,可靠性要求不高,优先考虑UCP
4.需要实现广播,优先考虑UDP网络层——IP协议
主机: 配有IP地址, 但是不进行路由控制的设备;
路由器: 即配有IP地址, 又能进行路由控制; 节点: 主机和路由器的统称.
网段划分
IP地址(通过一个整数来表示一个地址)分为两个部分, 网络号和主机号
网络号: 保证相互连接的两个网段具有不同的标识;.
主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号.
通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的IP地址都不相同.
IP地址不够用问题:
1.动态分配,上网分配
2. NAT机制,很多主机共用一个IP地址,路由器根据端口号来进一步区分
3.IPv6彻底解决问题数据链路层——用于两个设备(同一种数据链路节点)之间进行传递.
-
数据链路层协议_TCP/IP协议简介协议层图,封装与解封装,报文数据结构
2020-12-17 18:02:31TCP/IP协议层图TCP/IP协议层所处位置数据发送的过程:封装应用层:应用程序(app)把应用层协议内容以应用层首部的形式封装成数据data,从应用层送给传输层传输层:收到应用层的数据data,把data作为传输层的payload...TCP/IP协议层图
TCP/IP协议层所处位置
数据发送的过程:封装
应用层:应用程序(app)把应用层协议内容以应用层首部的形式封装成数据data,从应用层送给传输层
传输层:收到应用层的数据data,把data作为传输层的payload(有效数据),把传输层协议内容(tcp/udp,scrPort,dstPort(和目标程序的子进程绑定)等)以传输层首部transHeader的形式,添加到传输层的payload前面,封装成transHeader+data,送给网络层
网络层:收到传输层数据transportHeader+data,把transportHeader+data作为网络层的payload,把网络层协议内容(ipv4/ipv6,scrIP,dstIP,protocol(表明上层传输层的类型tcp/udp)等)以网络层首部ipHeader的形式,添加到网络层的payload前面,封装成ipHeader+transHeader+data,送给数据链路层
数据链路层:收到网络层数据ipHeader+transHeader+data,把ipHeader+transHeader+data作为数据链路层的payload,把链路层协议内容(scrMac,dstMac,type(表明上层网络层的类型arp/ipv4/ipv6)等)以链路层首部macHeader的形式,添加到链路层的payload前面,封装成macHeader+ipHeader+transHeader+data,通过网卡发到物理层上
数据接收的过程:解封装
数据链路层:网卡从物理层上接收数据macHeader+ipHeader+transHeader+data,在链路层解封装链路层首部macHeader,找到dstMac,和自己的mac地址判断是否相同,不同则丢弃,相同说明是发给自己的包,根据type通知网络层的正确的子程序(arp/ipv4/ipv6)来取链路层的payload,即ipHeader+transHeader+data
网络层:网络层子程序取到数据后,解封装网络层首部ipHeader,匹配dstIP和自己的IP地址,不同则丢弃,一致则根据protocol通知传输层的正确的子程序(tcp/udp)来取网络层的payload,即transHeader+data
传输层:传输层子程序取到数据后,解封装传输层首部transHeader,首先会计算校验和checksum,错误则丢弃,正确则根据dstPort通知绑定的子进程来取传输层的payload,即data
应用层:子进程取到数据后,交给对应的目标应用程序处理
报文数据结构
-
OSI参考模型的七层结构,各层的名称、主要功能及物理层、数据链路层、网络层和传输层的协议数据单元
2017-10-31 20:11:58详细说明一下,osi模型从第7层到第1层依次是: 第7层 应用层:OSI中的最高层。为特定类型的网络应用提供了访问OSI环境的手段。应用层确定进程之间通信的性质,以满足用户的需要。应用层不仅要提供应用进程所需要的...详细说明一下,osi模型从第7层到第1层依次是:
第7层 应用层:OSI中的最高层。为特定类型的网络应用提供了访问OSI环境的手段。应用层确定进程之间通信的性质,以满足用户的需要。应用层不仅要提供应用进程所需要的信息交换和远程操作,而且还要作为应用进程的用户代理,来完成一些为进行信息交换所必需的功能。它包括:文件传送访问和管理FTAM、虚拟终端VT、事务处理TP、远程数据库访问RDA、制造业报文规范MMS、目录服务DS等协议;
第6层 表示层:主要用于处理两个通信系统中交换信息的表示方式。为上层用户解决用户信息的语法问题。它包括数据格式交换、数据加密与解密、数据压缩与恢复等功能;
第5层 会话层:—在两个节点之间建立端连接。为端系统的应用程序之间提供了对话控制机制。此服务包括建立连接是以全双工还是以半双工的方式进行设置,尽管可以在层4中处理双工方式 ;
第4层 传输层:—常规数据递送-面向连接或无连接。为会话层用户提供一个端到端的可靠、透明和优化的数据传输服务机制。包括全双工或半双工、流控制和错误恢复服务;
第3层 网络层:—本层通过寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。它包括通过互连网络来路由和中继数据 ;
第2层 数据链路层:—在此层将数据分帧,并处理流控制。屏蔽物理层,为网络层提供一个数据链路的连接,在一条有可能出差错的物理连接上,进行几乎无差错的数据传输。本层指定拓扑结构并提供硬件寻址;
第1层 物理层:处于OSI参考模型的最底层。物理层的主要功能是利用物理传输介质为数据链路层提供物理连接,以便透明的传送比特流。
数据发送时,从第七层传到第一层,接收数据则相反。
上三层总称应用层,用来控制软件方面。下四层总称数据流层,用来管理硬件。
数据在发至数据流层的时候将被拆分。
在传输层的数据叫段,
网络层叫包,
数据链路层叫帧,
物理层叫比特流,这样的叫法叫PDU(协议数据单元) -
数据链路层
2019-03-25 16:24:35链路层(数据链路层或网络接口层):通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。 网络层:处理分组在网络中的活动;在TCP/IP协议族中,网络层包括IP协议(网际协议),ICMP协议(Internet互联网...TCP/IP通常被认为是一个四层协议系统。从下到上分别是:链路层,网络层,运输层和应用层。
链路层(数据链路层或网络接口层):通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。
网络层:处理分组在网络中的活动;在TCP/IP协议族中,网络层包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),IGMP(Internet组管理协议)。
运输层:主要为两台主机上的应用程序提供端到端的通信。两个传输协议:TCP(传输控制协议),UDP(用户数据协议)。
应用层:处理特定的应用程序细节。通用的应用程序包括:Telnet远程登录;FTP文件传输协议;SMTP简单邮件传送协议;SNMP简单网络管理协议等。
IP地址长32bit。在IP首部有一个长度8bit的数值,称作协议域。(其中1表示ICMP;2表示IGMP;6表示TCP协议;17表示UDP协议)
数据链路层的功能:
1.为IP模块发送和接受IP数据报
2.为ARP模块发送ARR请求和接受ARP应答
3.为RARP发送RARP请求和接受RARP应答
链路层的协议:以太网链路层协议;两个串行接口链路层协议(SLIP和PPP点对点协议)
以太网以CSMA/CD(带冲突检测的载波侦听多路接入)的媒体方法接入。
最大传输单元MTU
路径MTU
-
TCP-IP协议簇:从应用层到网络接口层
2021-02-22 16:46:31数据链路层 物理层 TCP——传输控制协议:用于从应用程序到网络的数据传输控制,负责在数据传送指之前把它们分割为IP包,然后在它们到达的时候将它们重组 IP——网际协议,负责计算机之间的通信 ... -
计算机网络-数据链路层
2020-05-28 01:12:31从主机1 到主机2 应用层之间的通信,经过了如图所示层次的变化。 物理层:双绞线/光纤,频分还是码分。链路层不关心这些。 基本概念和基本问题 信道两种类型 点对点信道 广播信道 链路: 物理线路 数据链路: 物理... -
网络基础---数据链路层
2019-07-20 17:06:45在网络的应用层 传输层 网络层 数据链路层 物理层中我的上一篇博客粗略的介绍了网络层的ip协议,在这篇博客你将花费8分钟看有关数据链路层的有关信息 1.对比理解“网络层”和“数据链路层” 假如有一个主机A想要发送... -
数据链路层转发的简单实现
2008-11-10 22:52:00不过它的大致功能是这样的:能够将ethx收到的所有数据从ethy接口转发出去,整个过程操作在数据链路层,这里ethx和ethy可能相同。 网上查了下资料并结合unp,了解到linux下访问数据链路层大致有两类方法。第一类方法... -
**关于网络体系 —— 数据链路层**
2019-04-03 11:13:37**关于网络体系 —— 数据链路层** tcp/ip网络体系结构从下到上分为...数据链路层在物理层的基础上进一步提供了一些来控制数据传输的协议,主要功能如下: 帧同步 所谓的帧同步是指接收方能在接收到的比特流中准... -
计算机网络(谢希仁 第七版) 数据链路层 个人笔记
2018-09-29 19:58:00写此博文目的:整理知识点方便自己以后复习和...帧从生成到发送的一个过程:由应用层,传输层,网络层形成的数据报,在数据链路层封装成帧,然后通过数据链路传输到另外一个结点 链路层的基本功能: 1)封装成... -
考研408 笔记 计算机网络【谢希仁第七版】第三章【数据链路层】差错检验 以太网 ppp协议 mac地址 信道利用...
2020-11-26 12:47:28数据链路层的简单模型 主机H1向主机H2发送信息,数据从应用层向下流动,到达物理层变成比特流,经过路由器转发,通过检查MAC地址,查看IP地址,然后选择路由,找到下一个地址,再向下到物理层,这样经过路由器转发... -
浅谈CAN总线--- 数据链路层
2020-08-30 16:12:24数据链路层的是符合CAN2.0B和ISO11898的协议规范的。 1. 帧类型介绍 帧的种类有多种: 数据帧:数据帧将数据从发送器传输到接收器。 远程帧:用于接收单元向具有相同 ID 的发送单元请求数据的帧。 过载帧:用于接收... -
计算机网络(谢希仁 第七版)第三章 数据链路层 笔记
2018-09-29 19:58:00数据链路层1)数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输,若把这些协议的软件和硬件加到链路上,就构成了数据链路数据链路层传输的数据单位:帧帧从生成到发送的一个过程:由应用层,传输... -
物联网应用层协议
2020-06-21 09:28:44物联网连接的七层协议如上图所示,从下往上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 应用层网络协议(DHCP)是一种使网络治理员能够中心治理和自动分配IP网络地址的通信协议。IP网络... -
网络层协议与应用
2020-12-10 14:11:58网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向... -
OSI,TCP/IP,五层协议的体系结构,以及各层协议
2019-10-05 22:58:37物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层(4层) 网络接口层、 网际层、运输层、 应用层。 五层协议 (5层) 物理层、数据链路层、网络层、运输层、 应用层。 每一次协议... -
网络层的协议(主要是IP协议、ICMP协议和ARP协议)与应用详情(IP数据包格式详解,ICMP协议详解,ARP协议...
2019-10-20 21:09:52网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向... -
网络协议的划分7层、5层、4层
2018-05-17 17:55:51应用层-—表示层—会话层—传输层—网络层—数据链路层—物理层 5层 包括:(从上到下) 是指协议栈 应用层—传输层—网络层—数据链路层—物理层 4层 解释 是指tcp/ip参考模型 包括:(从上到下) 应用层—... -
OSI网络七层协议以及每层的作用
2019-03-06 18:45:25OSI七层模型称为开放式系统互联参考模型OSI 七层模型是一种框架性的设计方法,是一个定义的非常好的...OSI的7层从上到下分别是 7应用层6表示层5 会话层 4传输层3网络层2数据链路层1物理层其中高层,即7、6、5、4层定... -
TCP/IP(六)应用层(DNS和HTTP协议)
2019-09-28 02:22:00到这一篇我已经把TCP/IP五层模型详细的说明了一遍,大体的从物理层到最上层的应用层做了一个大概的了解,其实总体学下来东西非常的多,我们需要经常的去系统性的去学习它。不然过一段时间就忘记了! 回顾一下前面的... -
五层协议的计算机网络体系结构
2020-02-20 10:52:362.数据链路层 3.网络层 4.运输层 5.应用层 主机之间的数据传递: 主机1中: 1.数据先传到应用层,加上应用层首部,称为应用层PDU。 2.加上运输层首部,成为运输层报文。 3.加上网络层首部,成为IP数据报(或分组)... -
OSI体系结构的各层协议
2019-08-10 16:34:15首先,OSI是一个七层协议的结构,从下到上依次是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它... -
网络七层协议的简要介绍
2019-09-17 01:44:52OSI是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范... OSI的7层从上到下分别是 7应用层6表示层5会话层4传输层3网络层2数据链路层1物理层其中高层,既7、6、5、4层定义了应用程序的功能,下面... -
OSI七层模型和TCP/IP层模型 以及对应的常见协议
2019-08-21 13:59:16OSI七层模型包括(从下到上):物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。 TCP/IP四层模型(从下到上):网络接口层、网络层、运输层、应用层 OSI七层模型 常见协议 TCP/IP四层模型 ... -
网络七层协议:OSI
2019-06-01 12:12:24OSI(网络七层协议) 是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范。 OSI模型有7层结构,每层都可以有几个子... 数据链路层 >> 物理层 ; 其中高层(即7、6、5、4层)定义了应用程序... -
计算机网络协议层次结构图
2020-11-14 12:43:45图片来源与王道 链路层的两个重要协议 PPP HDLC 物理层没有协议 图片从上到下依次是 应用层 传输层 网络层 数据链路层 物理层