IOS程序员技术干货

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

2018-05-28  本文已影响74人  kirito_song

目录


前言

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


协议

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

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


网络系统分层结构

层次结构

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

分层逻辑

协议栈

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


TCP/IP协议族体系结构

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


OSI与TCP/IP分层
由高到低可以分成:

边界

用户操作与服务

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

TCP/IP与OSI的区别


网络层协议

1、ARP

地址解析协议Address Resolution Protocol)

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

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确定目的地并投递。
接收方:识别物理层传输的比特流、经过层层解包直到变成数据被应用层识别。

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

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

路由器

工作原理

图片摘自:http://blog.51cto.com/seafog/1562852

主要功能

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

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

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

转发报文功能中的:

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


参考资料

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

上一篇 下一篇

猜你喜欢

热点阅读