美文网首页IOS程序员技术干货
网络协议补完计划--TCP/IP协议概述

网络协议补完计划--TCP/IP协议概述

作者: kirito_song | 来源:发表于2018-05-28 18:24 被阅读74次

    目录

    • 前言
    • 协议
    • 网络系统分层结构
      • 层次结构
      • 分层逻辑
      • 协议栈
    • TCP/IP协议族体系结构
      • 应用层
      • 传输层
      • 网络层
      • 网络接口层
      • 边界
      • TCP/IP与OSI的区别
    • 网络层协议
      • ARP
      • ICMP
      • IP协议
    • 传输层协议
      • TCP(面向连接通讯)
      • UDP(无连接通讯)
    • 应用层协议
      • Telnet
      • FTP
      • SMTP
      • WWW
    • TCP/IP协议工作流程
      • 数据的封装/打包
    • 路由器
      • 工作原理
      • 主要功能
        • 转发报文
        • 路由选择
    • 参考资料

    前言

    参照清华大学出版社-罗军周主编的《TCP/IP协议及网络编程技术》进行学习。
    本篇主要参考第二章:《TCP/IP协议概述》
    对何为TCP/IP协议以及相关知识进行介绍。


    协议

    • 一组收发信息的规定。

    规定了通讯的实体之间、交换报文的格式和次序。
    以及客户端如何发出信息、服务器如何响应等等。

    • 为了完成不同的服务、可能需要不同的协议作为支撑。

    比如通过遵循SMTP协议、可以让Foxmail和Outlook相互通讯。


    网络系统分层结构

    层次结构

    采用分层的方式、组织各类协议以及实现协议的对象。
    对于每个网络系统(比如TCP/IP、OSI):

    • 层数固定
    • 每层都涉及到不同的协议
    • 每层协议固定

    分层逻辑

    • 层级之间的功能、相对独立。
    • 层级之间有相应的逻辑接口。
    • 上层建立在下层的基础上。
    • 上层可以调用下层服务。

    协议栈

    各层协议之间形成一种从上到下、类似堆栈(特点:先进后出)结构的依赖关系。


    TCP/IP协议族体系结构

    借用网络上的一张图、与OSI比较一下


    OSI与TCP/IP分层
    由高到低可以分成:
    • 应用层:
      登录、下载、浏览、邮件等等
    • 传输层:
      主要的协议是TCP/UDP协议。
      负责两台主机上对应的应用进程之间"端到端"的通信。
    • 网络层:
      主要的协议是IP协议。
      负责把源主机上的分组(大文件会分段发送)根据需要发送到互联网中的任意一台目标主机上
    • 网络接口层
      通常包括系统的驱动程序、网卡。负责将其之上的网络层要发送出去的数据发送到其下面的物理网络(或者接收)。
      对于网络接口层、有些也和OSI一样会分成数据链路层(网卡)和物理层(网线)、这样就会变成五层协议。

    边界

    • 操作系统与应用软件的边界

    用户操作与服务

    • 地址边界

    高层互联网地址与底层网卡的边界

    TCP/IP与OSI的区别

    • 自下而上和自上而下
      • 前者是应实际需求而产生的实作、本身在发展之前并没有定义一个严谨的架构。
      • 后者是由标准化组织所制定、先定义一个功能完整的架构、在发展相应协议。
    • 标准化测试
      • 前者没有一个正式的单位负责测试软件是否完全遵照规范。
      • 后者则有专门的单位负责测试、但是测试周期较长(一般两到三年)。所以经常出现规范与产品脱节的情况。
    • 两套不同的协议
      大致实现相同的关系、也可以理解成相互竞争的关系。
    • 发展
      • 前者要早10年、技术上发展更成熟、开发出来的相关协议也较多。
      • 后者架构完整、功能详尽。但市场占有比例不如TCP/IP。

    网络层协议

    1、ARP

    地址解析协议Address Resolution Protocol)

    实现IP地址向物理地址的映射

    • IP地址
      可变逻辑编号(109信箱)
    • 物理地址
      固定mac地址 (xx路xx号)
    2、ICMP

    控制报文协议(Internet Control Message Protocol)

    传输出错的反馈协议(比如PIN命令)

    3、IP协议

    网络层中最重要的协议。

    为了将数据分组在互联网上进行传输、而制定的规则。


    传输层协议

    《《知乎》》上发现了一个很有趣的回答、搬过来:

    亚当和夏娃分别生活在两个山头,山头之间是万丈深渊,亚当采集野果需要分享给夏娃,如果他们之间有一条索道(物理连接),野果可以顺着索道滑到夏娃那一边,那就没有网络协议什么事了。
    事实上山头之间没有索道。但是亚当何等聪明,于是他想出了一个方法,假设亚当需要给夏娃10个野果,否则她会饿死。

    1、TCP

    传输控制协议Transmission Control Protocol)

    • 面向连接通讯

    确保从发送方发出的数据、按照顺序完整的交付给接收方。

    连接建立
    亚当对着夏娃大喊:爱妃,你听得到吗?
    夏娃回应:孩他爹,我听得到!
    亚当接着喊:那好,我扔果子给你吃,你接到果子就喊一声,一共十个。
    运送货物
    于是亚当开始扔第一个,夏娃喊收到了一个。
    亚当扔第二个,夏娃喊收到两个。
    超时重传 ( timeout retransmit)
    亚当扔第三个,可是夏娃迟迟没有回音,亚当意识到可能果子落到悬崖了,于是重新扔,夏娃喊收到第三个。
    Advertised window size = 0
    于是亚当连续扔了第四、五、六个,夏娃急了:孩他爹,慢点扔,臣妾忙不过来了…
    Advertised window size > 0
    于是亚当坐下休息,爱妃又开始叫了:继续扔吧。
    亚当开始扔第七个,夏娃喊收到七个。

    关闭连接
    终于亚当扔完了,亚当喊:爱妃,果子扔完了,寡人去忙别的了。
    夏娃回复:好的,我也休息一下,再见。
    亚当:再见
    以上的过程类似TCP连接的过程,TCP是一个虚拟连接

    2、UDP

    用户数据报协议(User Datagram Protocol)

    • 无连接通讯

    只负责发送、不保证安全性(确认到达)以及顺序。因而效率高于TCP。

    亚当和夏娃吵架了,任凭亚当如何大声喊,夏娃躲在树林后生闷气,一声不响,亚当害怕夏娃饿死,于是
    开始自说自话朝着夏娃的山头扔玉米棒子:
    一个、两个、三个…
    一共扔了十个,但最终扔到对方山头到底有几个,亚当没有底,也许有的玉米棒子落到悬崖了,但是这个效率高啊,可以连续扔,以前扔10个果子需要一分钟,现在只需要20秒。
    亚当扔果子、扔玉米都有可能扔到悬崖下,但是扔果子为何可以确保对方收到十个?那是因为夏娃收到一个果子,然后喊收到了,如果没有收到,亚当就重新扔,直到夏娃说收到了。而扔玉米棒子对方没有确认,所以对于丢弃的情况无法知道,也无法重新扔。


    应用层协议

    1、Telnet

    远程登录协议

    2、FTP

    文件传输协议(File Transfer Protocol)

    文件传输

    3、SMTP

    简单邮件传输协议(Simple Mail Transfer Protocol)

    收发邮件

    4、WWW

    网络浏览


    TCP/IP协议工作流程

    TCP/IP协议工作流程
    发送方:将应用层发出的数据、经过四层协议栈层层打包直到被转化成一串比特流(012进制)送入物理网络、路由器通过IP确定目的地并投递。
    接收方:识别物理层传输的比特流、经过层层解包直到变成数据被应用层识别。
    • 数据的封装/打包

    每一层对上层数据的头(尾)添加数据的动作

    数据包封装过程
    例如:当一个文件被拆分、每个分组数据都会按照以上的格式被打包投递、最后按照特定顺序拼接成原始文件。

    路由器

    • 具有多接口的、用于数据包转发的专用计算机
    • 在异种的网络互联环境中建立灵活的连接。
      例如以太网和令牌环
    • 可以用完全不同的数据分组和介质访问方法链接各种资源。
    • 不关心各自网络使用的硬件设备、但要求运行与网络协议相一致的软件。
      路由器品牌可以不同、但要支持相同的协议。
    • 工作于网络层
      • 上接传输层(TCP)、下接物理层(网线/光纤)、通过IP报文的方式传递数据。
      • 作为网络层的核心设备、一般来讲异总网络互连或者多个网络互连都应采用路由器的方式。

    工作原理

    图片摘自:http://blog.51cto.com/seafog/1562852
    • 如果发送方和接收方处在同一个局域网(网关)、报文将会被直接发送到网络上进行传输。
    • 当发送方和接收方处在不同的网关内、路由器需要选择一个能到到达目的子网IP的路由器、并将IP报文发送。如果没有找到、则将IP报文发送给默认网关。
    • 路由器转发IP报文时、只根据报文目的IP地址网络号部分、选择合适的端口。
    • 路由器接收IP报文时、会判断端口所接的是否是目的子网、如果不是则继续转发。

    主要功能

    • 转发报文

    为经过路由器的每一个分组、寻找一条最佳传输路径、并将该数据有效的传输到目的的站点。

    路由器会根据路由表所指定的位置、将IP报文发送到下一个站点(路由器或主机)。如果在表中匹配失败、则丢弃该IP报文。
    如果目的网络直接与路由器相连、路由器就把IP报文直接送到相应的端口上。

    例如之前解释TCP/IP的工作流程时:将以太网发送的数据、经过路由器转发到了令牌环网络上。

    • 路由选择

    转发报文功能中的:

    在路由表中寻找一条最佳传输路径。


    参考资料

    路由器工作原理
    怎么理解TCP的面向连接和UDP的无连接(不面向连接)?

    相关文章

      网友评论

        本文标题:网络协议补完计划--TCP/IP协议概述

        本文链接:https://www.haomeiwen.com/subject/obqgjftx.html