TCP/IP详解(一) -- 基本概念

一、什么是TCP/IP

TCP/IP是一组协议的代名词,包括许多别的协议,组成了TCP/IP协议簇。TCP/IP 采纳了ARPANET参考模型,将协议分为4层。

二、 ARPANET参考模型
编号名称描述/例子.
7应用层实质上是Internet兼容的任何应用,包括网页(HTTP)、DNS、DHCP
4传输层提供在抽象的、由应用管理的“端口”之间的数据交换。可能包括差错和流量控制。例子:TCP、UDP、SCTP、DCCP
3.5网络层(辅助)协助完成网络层设置、管理和安全 的非正式的“层”。例子:ICMP、IGMP、IPsec。网络层
3网络层定义抽象的数据报和提供路由。例子:IP和IPv6。网络层
2.5链路层(辅助)用于网络层到基于多接入链路层网络的链路层的地址映射的非正式的“层”。例子:ARP 。驱动

上面的IGMP、ARP没有被IPv6使用。
每层都会有一个标识符,允许接收方决定哪些协议或数据流可以复用在一起。每层通常也有地址信息,它用于保证一个PDU被交付到正确的地方。
分层体系结构的一个主要优点是具有协议复用的能力。这种复用形式允许多种协议共存于同一基础设施中。也允许相同协议对象(例如连接)的多个实例同时存在。

三、分层到底是什么意思,和数据传输有什么关系

    很多人都知道听说过网络分层(OSI分为7层,ARPANET分为4层),但大多不明白分层到底是什么意思,有什么用,他和数据传输有什么关系。接下来,我们自下而上,分解从链路层开始数据传输的工作 。

    以太网帧包含一个48位的目的地址(又称位链路层或介质访问控制(MAC)地址)和一个16位以太网类型字段。0x0800(十六进制)表示这个帧包含IPv4数据报。Ox0806和0x86DD分别表示ARP和IPv6。假设目的地址与接收方的一个地址匹配,这个帧将被接收并校验差错,以太网类型字段用于选择处理它的网络层协议。

    如果接收到的帧包含一个IP数据报,以太网头部和尾部信息将被清除,并将剩余字节(包含帧的有效载荷)交由IP来处理。IP检测一系列的字段,包含数据报中的目的IP地址。如果目的地址与自己的一个IP地址匹配,并且数据报头部(IP不检测有效载荷)没有错误,则检测8位的IPv4协议字段(在IPv6中成为下一个头部字段),以决定接下来调用哪个协议来处理。 常见的值包括1(ICMP)、2(IGMP)、4(IPv4)、6(TCP)、17(UDP)、41(IPv6)。

    如果网络层(IPv4或IPv6)认为传入的数据报有效,并且已经确定正确的传输层协议,则将数据报(必要时由分片重组而成)交由传输层处理。在传输层中,大部分协议(包含TCP和UDP)通过端口号将数据报复用分解到适当的应用。

四、其他基本概念(持续更新)
  • ARP协议
    地址解析协议,它是IP4专用协议。只用于多接入链路层协议(例如以太网、WIFI),完成Ip层使用的地址和链路层使用的地址之前的转换。

  • ICMP协议
    Internet控制消息协议,是IP的一个辅助协议。IP层使用它与其他主机或路由器的IP层之间交换差错消息和其他重要消息。有ICMPv4和ICMPv6两个版本。(ping和traceroute都使用ICMP)。ICMP消息被封装在IP数据报中,采用与传输层PDU相同的封装方式。

  • IGMP协议
    Internet组管理协议,是IPv4的辅助协议。采用组播寻址和交付来管理作为组播组成员的主机(一组接收方接收一个特定目的地址的组播流量)。

  • IP数据报
    IP发送给链路层协议的PDU[2]称为IP数据报,它的大小是64KB(IPv6将它扩大为4GB)

  • 分片
    大的分组(IP数据报)放入链路层PDU(数据帧)时,需要进行缩小处理,这个过程成为分片,它通常由IP主机和某些路由器在必要时执行。

  • 重组
    数据报分片后,到达目的地后重新组合,称为重组

  • IP地址
    由于每个IP分组都是一个数据报,所以都包含发送发和接收方的第3层(ARPANET模型的第三层,网络层)地址。这些地址成为IP地址,即32位的IPv4地址和128位的IPv6地址。

  • 转发
    每个数据报的目的地址用于决定将该数据报发送到哪里,而做出决定和发送数据报到下一跳的过程成为转发。

  • 多接入网络: 当超过一个邻居可以访问共享网络时,这个网络成为多接入网络。wifi和以太网是这种多接入链路层网络的例子,特定协议用于协调多个站在任何时间访问共享介质。

  • PDU:协议数据单元,是对等层次之间传递的数据单位。协议数据单元(Protocol Data Unit )物理层的 PDU是数据位(bit),数据链路层的 PDU是数据帧(frame),网络层的PDU是数据包(packet),传输层的 PDU是数据段(segment),其他更高层次的PDU是报文(message)。

  • 封装
    当某层的一个PDU的对象(分组、消息等)被底层携带时,这个过程称为在相邻低层的封装(作为不透明数据,不透明的意思是无需解释的数据)

  • 复用
    复用允许多种协议共存于同一基础设施中。也允许相同协议对象(例如连接)的多个实例同时存在。可以发生在不同层,并在每层都有不同类型的标识符,用于确定信息属于哪个协议或信息流。第N层的多个对象可以通过第N-1层的封装而复用。

  • 组播地址
    标识一组主机接口,而不是单个接口。一个组所覆盖的网络部分称为组的范围。常见范围包括 节点本地(同一计算机)、链路本地(同一子网)、站点本地(使用于一些站点)、全球(整个Internet)和管理(用于一个网络区域内已手动配置到路由器的地址)。

  • 任播地址
    任播地址是一个单播IPv4或IPv6地址,这些地址根据它所在的网络确定不同的主机。这是通过配置路由器通知Internet中多个站点有相同单播路由实现。一个任播地址不是指Internet中的一台主机,而是对于任播地址“最合适”或“最接近”的一台主机。

  • 子网掩码
    由路由器和主机使用,确定一个IP地址的网络/子网部分的结束和主机部分的开始。掩码由一些1后跟一些0构成(二进制形式)。例如,常见的子网掩码:255.255.255.0 转二进制为11111111 11111111 11111111 00000000


[1]TCP/IP详解·卷1:协议 机械工业出版社

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值