讲的是这本书: Book:《TCP/IP 详解》
内容提要
网络分层
OSI 分层模型
分层原则(软件产品也是一样): 每层有清晰的边界,每层有自己的功能。每层相互独立,互不影响.
举例: 北京老板想发月饼(中秋节),所想他想告诉上海公司的老板也发月饼。
应用层: 北京老板说了要发月饼.
表示层: 但是老板肯定说的是白话, 需要贴身秘书帮着修饰一下话语. (修饰应用层数据,修饰的冠冕堂皇一些)
会话层: 部门秘书把信放到信封里,然后写上地址, 源 / 目的地址就等于主机上的两个应用进程. (所以这层主要是把会话的地址写上)
传输层: 前台,前台有很多信要传输,比如这里可能有10封信都是从北京公司传到上海公司的, 但是可能是去不同部门的.
(它需要对信件进行打包, 把所有的北京去上海的信打包在一起, 然后一起传输(这样节省费用(资源))),
这时的包的源地址和目的地就变成了北京公司 / 上海公司.
网络层: 前台把包给了网络层的邮局, 邮局排序员帮助查路线(路由),发现从北京到上海没有直达的路线,必须要中转, 下一站中站应该是江苏.
查询到路径以后(规划好路线),就会把包送给数据链路层. 这时的源/目的: 北京快递公司 / 上海快递公司 (中转江苏快递公司) 这里是IP地址.
数据链路层: 快递公司的装箱人工(北京火车站) ,到了数据链路层, 源和目的就是:北京火车站/江苏火车站. 这里的以太网的mac地址.
物理层: 火车驾驶员(北京到江苏), 将包裹放到北京到江苏的火车上(真正的传输)
物理层: 到了江苏火车站之后(物理传输)
数据链路层: 江苏火车站工作人员看看 MAC地址, 确实是发给江苏的包裹,他就把包裹拿出来
网络层: 拿出包裹之后, 又将包裹给网络层的邮局, 邮局人员看到了源/目的: 北京/上海, 网络层又查询路由, 这时候看到了一条直连路径.
这时候, 它又会找数据链路层的装箱工.
数据链路层: 装箱工(上海机场的), 将 MAC 地址装上. 这时候 MAC 的 源/目的 就变成了 江苏飞机场 / 上海飞机场.
物理层: 飞机(飞行员), 按照上边的 MAC 地址, 将包裹空运到上海飞机场.
到了上海以后:
数据链路层: 上海机场装箱工查看 MAC 地址的目的地确实是上海机场,于是送到邮局.
网络层: 邮局解开包裹, 发现IP地址(目的地)是上海,我就是上海, 那送上海公司吧,按照IP地址送过去。
传输层: 邮局将包裹送到公司前台, 这时候包裹里可能很多信,前台将包裹打开,把信拿出来,按照信上的地址,送到各个部门.
会话层: 部门秘书拿到信后,知道这个信该给贴身秘书翻译一下(简单总结一下,因为老板没有那么多时间来看信, 需要贴身秘书帮忙筛选些干货).
表示层: 贴身秘书筛选完之后, 转达给老板
应用层: 上海老板领会北京老板的意图.
传输层: 端口,也就是两个应用程序的传输. 特别注意,这层有端口的设置. TCP / UDP协议. TCP 在不可靠的IP层上提供一个可靠的运输层.
UDP 也是不靠谱的, 会丢包的. 但是它效率高. 比如语音是通过UDP传的. 如果语音用TCP, 那么有可能2秒前说的话,在2秒后出现了。
这很奇怪, UDP比如说10个字的话,丢2个也还好。所以这种实时传输的,就是用UDP传输的.(语音&视频 都是)
网络层: 路由, IP 协议. (逐跳的 hop-to-hop), 比如想北京->上海,那么可能是北京先到下一跳苏州,然后再由苏州到上海. (这个层的传输是不可靠的)
这个不可靠的传输, 比如你穿1,2,3 但是最后传输成功的可能是 1,3,2丢失了, 这时就需要TCP来保证. (可以丢包)
数据链路层: MAC 地址. ARP协议: 询问一个 IP地址的 MAC地址.
Telnet23: 非常不安全
抓包程序: OmniPeek, Wireshark, Fiddler
通过协议号, 找到对应的程序