美文网首页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协议概述

    目录 前言 协议 网络系统分层结构层次结构分层逻辑协议栈 TCP/IP协议族体系结构应用层传输层网络层网络接口层边...

  • TCP协议

    TCP/IP协议分层详解TCP/IP协议详解通俗易懂网络协议(TCP/IP概述)什么是TCP/IP协议?

  • 计算机网络TCP/IP协议组和UDP

    概述TCP/IP TCP/IP不是传输层协议,而是网络通讯协议,它包括许多协议。TCP/IP是个协议组,可分为三个...

  • TCP/IP 网络协议 简记

    参考文档TCP/IP网络协议TCP/IP 协议 **************************** 常见协议...

  • 计算机网络技术(三)——网络协议和体系结构

    摘要 网络协议和体系结构概述 OSI参考模型 TCP/IP参考模型 TCP和UDP 一、网络协议和体系结构概述 网...

  • 网络协议补完计划--TCP协议

    目录 TCP协议的基本概念面向链接的服务可靠的服务序列号字节流传输 TCP协议数据段的格式TCP伪头部 TCP协议...

  • TCP/UDP、IP 、Socket、HTTP笔记

    1.1 TCP/IP协议组 TCP/IP协议(传输控制协议)由网络层的IP协议和传输层的TCP协议组成 IP层负责...

  • TCP和UDP

    TCP协议为TCP/IP协议;UDP为UDP/IP协议。TCP和UDP都是对应网络七层协议上的传输层。IP属于网络...

  • 你需要知道的TCP/IP

    前言 TCP/IP 协议 是网络通信的基石,TCP/IP 协议 不是只有 TCP 和 IP 协议,它是整个网络通信...

  • 网络协议补完计划--IP协议

    目录 前言 IP协议概述 IP协议工作原理 IP协议的特点 IP地址IPV4与IPV6特殊地址私有地址 子网技术子...

网友评论

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

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