TCP/IP协议架构介绍(一):网络接口层

系列文章目录

TCP/IP协议架构介绍(一):网络接口层
TCP/IP协议架构介绍(二):网络层
TCP/IP协议架构介绍(三):传输层
TCP/IP协议架构介绍(四):应用层



前言

TCP/IP协议架构是通信协议的统称,常被称为TCP/IP协议族,包括两个核心协议:TCP(传输控制协议)IP(网际协议),TCP/IP协议的开发始于20世纪60年代后期,早于OSI参考模型,由于TCP/IP模型更加简洁易用,目前大多采用TCP/IP模型。一共包括4层:应用层、传输层、网络层和网络接口层。


OSI模型与TCP/IP模型:

物理层

负责0、1 比特流(0/1序列)与电压的高低之间的转换

数据的单位称为比特(bit)

属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45、fddi令牌环网等
OSI采纳了各种现成的协议,其中有RS-232、RS-449、X.21、V.35、ISDN、以及FDDI、IEEE802.3、IEEE802.4、和IEEE802.5的物理层协议

数据链路层

负责物理层面上的互联的、节点间的通信传输(例如一个以太网项链的2个节点之间的通信);

该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。在这一层,数据的单位称为帧(frame)

  • 封装成帧: 把网络层数据报加头和尾,封装成帧,帧头中包括源MAC地址和目的MAC地址。

  • 透明传输:零比特填充、转义字符。

  • 可靠传输:在出错率很低的链路上很少用,但是无线链路WLAN会保证可靠传输。

  • **差错检测(**CRC):接收者检测错误,如果发现差错,丢弃该帧。

主要协议

①点对点协议PPP(Point to Point Protocol)
②以太网(Ethernet)
③高级数据链路控制协议HDLC(High-Level Data Link Control)
④ 帧中继(Frame Relay)
⑤异步传输模式ATM(Asynchronous Transfer Mode)

MAC地址

MAC(Medium/Media Access Control)地址,媒体访问控制,或称为物理地址、硬件地址,48位

MAC地址

  • 组织唯一标识符(OUI)由IEEE(电气和电子工程师协会)分配给厂商
  • I/G(Individual/Group)位,如果I/G=0,则是某台设备的MAC地址,即单播地址;如果I/G=1,则是多播地址(组播+广播=多播)。
  • G/L(Global/Local,也称为U/L位,其中U表示Universal)位,如果G/L=0,则是全局管理地址,由IEEE分配;如果G/L=1,则是本地管理地址,是网络管理员为了加强自己对网络管理而指定的地址。

MAC帧

IP地址负责表示计算机的网络层地址,网络层设备(如路由器)根据IP地址来进行操作;
MAC地址负责表示计算机的数据链路层地址
IP和MAC地址这种映射关系由ARP(Address Resolution Protocol,地址解析协议)协议完成。

PPPoE 协议

基于以太网的点对点通讯协议PPPOE(Point to Point Protocol over Ethernet)

  • 单纯的以太网没有验证功能,也没有建立和断开连接的处理,因此无法按时计费。
  • 如果采用PPPoE管理以太网连接,就可以利用PPP的验证等功能使各家ISP可以有效地管理终端用户的使用。
  • 分成发现阶段(Discorvery)和PPP会话阶段(Session)

报文的以太网类型:

  • 当值为0x8863时表示Discovery阶段或Terminate阶段。
  • 当值为0x8864时表示Session阶段。

PPPoE拨号过程

PPPoE Discovery发现阶段

  1. 用户主机用广播的方式发出**PADI **(PPPOE Active Discovery Initiatio) 包,准备去获得所有可连接的接入设备(获得其MAC地址);
  2. PPPoE服务器收到PADI包后,返回PADO (PPPOE Active Discovery Offer) 作为回应;
  3. 用户主机从收到的多个PADO包中,根据其名称类型名或者服务名,选择一个合适的接入设备,然后发送PADR (PPPOE Active Discovery Request) 包,另外如果一个用户主机在发出PADI后在规定时间内没有收到PADO,则会重发PADI,并且加倍等待时间
  4. PPPoE服务器收到PADR包后,返回PADS (PPPOE Active Discovery Session-confirmation) 包,其中包含了一个唯一session ID,双方进入PPP会话阶段。
code报文
0x09PADIPPPoE Active Discovery InitiationPPPoE发现初始报文
0x07PADOPPPoE Active Discovery OfferPPPoE发现提供报文
0x19PADRPPPoE Active Discovery RequestPPPoE发现请求报文
0x65PADSPPPoE Active Discovery SessionconfirmationPPPoE发现会话确认报文
0xa7PADTPPPoE Active Discovery TerminatePPPoE发现终止报文

Discovery阶段:以太网帧的ETHER_TYPE域都设置为 0x8863

PPPoE Session 会话阶段

1 LCP协商阶段(Link Control Protocol)
链路协商

  • LCP用于建立、拆除和监控PPP数据链路
  • 还用于链路层参数的协商,如MRU、验证方式

协商双方互相发送一个LCP Config-Request报文,确认收到的Config-Request报文中的协商选项,根据这些选项的支持与接受情况,做出适当的回应。若两端都回应了Config-ACK,则标志LCP链路建立成功,否则会继续发送Request报文,直到对端回应了ACK报文为止。

2 认证阶段

会话双方通过LCP协商好的认证方法进行认证,如果认证通过了,才可以进行下面的网络层的协商。认证过程在链路协商结束后就进行。

  • PAP(Password Authentication Protocol,口令认证协议)

    PAP为两次握手协议,它通过用户名及口令来对用户进行验证。

  • CHAP(Challenge Handshake Authentication Protocol,质询握手认证协议)

    CHAP为三次握手协议。只在网络上传输用户名,并不传输用户口令,因此它的安全性要比PAP高。

    Md5算法

3 NCP协商阶段

网络层协商:IPCP、BCP、IPv6CP等

  • 协商PPP报文的网络层参数,如IP地址,DNS Server IP等。

  • PPPoE用户主要通过IPCP来获取访问网络的IP地址或IP地址段,网关,DNS等。

  • 用户和接入设备对IP服务阶段的一些要求进行多次协商,以决定双方都能够接收的约定。如:IP业务阶段使用的IP压缩协议等。

  • 双方的协议是通过报文中包含的Option项进行协商的,每一个Option都是一个需要协商的问题。最后双方都需要对方答复Configure_Ack的同意报文。

  • IPCP的协商过程是基于PPP状态机进行协商的。

  • 经过双方协商,通过配置请求、配置确认、配置否认等包文交换配置信息,最终由initial (或closed)状态变为Opened状态

  • IPCP状态变为Opened的条件必须是发送方和接收方都发送和接收过确认报文

  • IPCP协商过程中,协商报文可包含多个选项,即参数。

  • 各个选项的拒绝或否认都不能影响IPCP的UP,IPCP可以无选项协商,无选项协商也同样能够UP。选项有IP Address、网关、掩码等,其中IP Address是最重要的一个选项,有些厂家的实现必须这个选项得到确认,大多数厂家的实现允许这个选项为空。

PPPoE Terminate阶段

  • PPP通信双方可以使用PPP协议自身来结束PPPoE会话
  • 当无法使用PPP协议结束会话时可以使用PADT(PPPoE Active Discovery Terminate)报文。
  • 进入PPPoE Session阶段后,PPPoE Client和PPPoE Server都可以通过发送PADT报文的方式来结束PPPoE连接
  • PADT数据包可以在会话建立以后的任意时刻单播发送。在发送或接收到PADT后,就不允许再使用该会话发送PPP流量了。
--THE END--

文章标题:TCP/IP协议架构介绍(一):网络接口层
本文作者:hiyo
本文链接:https://blog.csdn.net/u010698107/article/details/113528747
欢迎关注公众号:「测试开发小记」及时接收最新技术文章!# 系列文章目录

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
说明--TCPIP高效编程:改善网络程序的44个技巧 PDF中文版带书签-目录 下载链接放在文档中 《TCP/IP高效编程:改善网络程序的44个技巧》是TCP/IP 领域历久弥新的经典著作,网络编程人员必备,对TCP/IP 网络编程中存在的各种问题进行了全面解析,旨在帮助读者深入透彻地理解TCP/IP 网络编程。本书组织方式比较特别,正文部分包括4 章,将网络编程中存在的常见问题组织成44 个技巧,探讨问题的过程中构建并运行了多个程序,并且指出了代码的源地址,便于读者查看。全书以技巧的形式解答了日常工作中遇到的经典问题,将本书作为手册使用,极其方便。 《TCP/IP高效编程:改善网络程序的44个技巧》主要面向有一定经验的初学者或中级网络程序员,也可作为计算机相关专业人士的参考读物。 ================ 原书名:Effective TCP/IP Programming: 44 Tips to Improve Your Network Programs 原出版社: Addison-Wesley Professional 作者: (美)Jon C. Snader 译者: 陈涓 赵振平 作译者 Jon C.Snader:TCP/IP专家,Paradigm 4的资深软件工程师。他的工作领域包括通信、网络、编译器开发、操作系统以及无线网络控制器等。最近主要从事公共安全市场的报文交换系统方面的工作。 陈涓 1997年毕业于南京通信工程学院,获得通信与信息系统方向硕士学位。留校任教至今,从事网络应用方面的工作。 赵振平 1998年毕业于南京大学计算机科学系,获得操作系统和网络方向硕士学位。目前任职于南京信风软件有限公司(www.greatbit.com),从事网络安全和多媒体方面的工作。 目录 《TCP/IP高效编程:改善网络程序的44个技巧》 第1章 概述 1 1.1 几个约定 1 1.2 本书其余部分的内容介绍 2 1.3 客户端—服务器结构 4 1.4 对基本套接字API的回顾 5 1.5 小结 12 第2章 基本概念 13 2.1 技巧1:理解面向连接和无连接协议之间的区别 13 2.2 技巧2:理解子网和CIDR的概念 18 2.2.1 分类编址 18 2.2.2 子网划分 21 2.2.3 CIDR 26 2.2.4 子网划分和CIDR的状态 27 2.2.5 小结 27 2.3 技巧3:理解私有地址和NAT 28 2.4 技巧4:开发并使用应用程序“框架” 30 2.4.1 TCP服务器框架 31 2.4.2 TCP客户端框架 36 2.4.3 UDP服务器框架 38 2.4.4 UDP客户端框架 39 2.4.5 小结 41 2.5 技巧5:套接字接口比XTI/TLI更好用 41 2.6 技巧6:记住,TCP是一种流协议 43 2.7 技巧7:不要低估TCP的性能 50 2.7.1 UDP源程序与接收程序 52 2.7.2 TCP源程序及接收程序 53 2.7.3 小结 59 2.8 技巧8:避免重新编写TCP 59 2.9 技巧9:要认识到TCP是一个可靠的,但并不绝对可靠的协议 61 2.9.1 可靠性——是什么,不是什么 61 2.9.2 故障模式 63 2.9.3 网络中断 63 2.9.4 对等实体崩溃 64 2.9.5 对等实体的主机崩溃 68 2.9.6 小结 69 2.10 技巧10:记住,TCP/IP不是轮询的 69 2.10.1 保持活跃 70 2.10.2 心跳信号 71 2.10.3 另一个例子 76 2.10.4 小结 81 2.11 技巧11:提防对等实体的不友好动作 81 2.11.1 检测客户端的终止 82 2.11.2 检测无效输入 84 2.11.3 小结 88 2.12 技巧12:成功的LAN策略不一定能推广到WAN中去 88 2.12.1 性能问题举例 88 2.12.2 隐含错误举例 89 2.12.3 小结 93 2.13 技巧13:了解协议是怎样工作的 93 2.14 技巧14:不要把OSI七参考模型太当回事 94 2.14.1 OSI模型 95 2.14.2 TCP/IP模型 96 2.14.3 小结 98 第3章 构建高效且健壮的网络程序 99 3.1 技巧15:理解TCP的写操作 99 3.1.1 从应用程序的角度看写操作 99 3.1.2 从TCP角度看写操作 100 3.1.3 小结 103 3.2 技巧16:理解TCP的有序释放操作 103 3.2.1 shutdown调用 104 3.2.2 有序释放 106 3.2.3 小结 110 3.3 技巧17:考虑用inetd来装载应用程序 111 3.3.1 TCP服务器 111 3.3.2 UDP服务器 114 3.3.3 小结 118 3.4 技巧18:考虑用tcpmux为服务器“分配”知名端口 118 3.5 技巧19:考虑使用两条TCP连接 126 3.5.1 单连接结构 127 3.5.2 双连接架构 128 3.5.3 小结 133 3.6 技巧20:使应用程序成为事件驱动的(1) 133 3.7 技巧21:使应用程序成为事件驱动的(2) 140 3.8 技巧22:不要用TIME-WAIT暗杀来关闭一条连接 147 3.8.1 它是什么 147 3.8.2 为什么要使用它 149 3.8.3 TIME-WAIT暗杀 150 3.8.4 小结 151 3.9 技巧23:服务器应该设置SO_REUSEADDR选项 151 3.10 技巧24:可能的话,使用一个大规模的写操作,而不是多个小规模的写操作 155 3.10.1 禁用Nagle算法 158 3.10.2 将写操作合并起来 159 3.10.3 小结 161 3.11 技巧25:理解如何使connect调用超时 162 3.11.1 使用告警 162 3.11.2 使用select 164 3.11.3 小结 167 3.12 技巧26:避免数据复制 167 3.12.1 共享内存缓冲区 168 3.12.2 一个共享内存缓冲区系统 169 3.12.3 一个UNIX实现 171 3.12.4 一个Windows实现 175 3.12.5 小结 179 3.13 技巧27:使用前将结构sockadddr_in清零 179 3.14 技巧28:不要忘记字节的性别 180 3.15 技巧29:不要将IP地址或端口号硬编入应用程序中 182 3.16 技巧30:理解已连接的UDP套接字 187 3.17 技巧31:记住,并不是所有程序都是用C编写的 190 3.18 技巧32:理解缓冲区长度带来的影响 195 第4章 工具和资源 199 4.1 技巧33:熟悉ping实用工具 199 4.2 技巧34:学习使用tcpdump或类似的工具 201 4.2.1 tcpdump是如何工作的 202 4.2.2 使用tcpdump 205 4.2.3 tcpdump的输出 206 4.2.4 小结 210 4.3 技巧35:学习使用traceroute 210 4.3.1 traceroute是如何工作的 212 4.3.2 Windows TRACERT 214 4.3.3 小结 215 4.4 技巧36:学习使用ttcp 215 4.5 技巧37:学习使用lsof 219 4.6 技巧38:学习使用netstat 221 4.6.1 活动套接字 221 4.6.2 接口 223 4.6.3 路由表 223 4.6.4 协议统计 225 4.6.5 Windows版的netstat 227 4.6.6 小结 227 4.7 技巧39:学习使用系统中的调用追踪工具 227 4.7.1 过早终止 227 4.7.2 ttcp性能问题 231 4.7.3 小结 232 4.8 技巧40:构建并使用捕获ICMP报文的工具 233 4.8.1 读取ICMP报文 233 4.8.2 打印ICMP报文 234 4.8.3 小结 239 4.9 技巧41:读Stevens的书 240 4.9.1 《TCP/IP详解》丛书 240 4.9.2 《UNIX网络编程》丛书 241 4.10 技巧42:阅读代码 242 4.11 技巧43:访问RFC编辑者的页面 243 4.12 技巧44:经常访问新闻组 244 附录A 各种UNIX代码 247 附录B 各种Windows代码 250 参考书目 253 索引 257 ======================
TCP/IP协议第一版是指Internet Engineering Task Force (IETF)在1980年代早期开发的最初版本TCP/IP协议套件。这个版本的协议成为了现在使用的Internet协议的基础,它定义了网络通信的规则和标准。 TCP/IP协议第一版包含了四协议:网络接口,网络,传输和应用网络接口负责处理网络硬件和设备之间的通信。它定义了如何发送和接收数据帧。这些数据帧是将数据从源地址传输到目的地址的基本单位。 网络负责在不同的网络之间传输数据。它定义了如何将数据从一个网络发送到另一个网络。这协议使用了IP(Internet Protocol)来寻址和路由数据包。 传输负责在源地址和目的地址之间建立可靠且有序的通信连接。TCP(Transmission Control Protocol)是这一的主要协议,它确保数据的可靠传输。 应用是最上的协议,它定义了用于特定应用的协议。HTTP(Hypertext Transfer Protocol)和FTP(File Transfer Protocol)等协议都属于应用TCP/IP协议第一版的重要特征是它的灵活性和可扩展性,它可以适用于不同类型的网络环境和应用场景。它提供了一个开放的网络架构,可以连接不同的设备和系统。由于其开放性和可扩展性,TCP/IP协议第一版逐渐成为了全球互联网的标准协议。 虽然TCP/IP协议第一版是很早的版本,但它为后来的TCP/IP版本以及其他网络协议的发展奠定了基础。它是互联网通信的基石,也是我们现在使用的互联网的基础协议之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值