TCP/IP
1960年,美国国防部希望在进行通信时,即使受到攻击,也可以保证通信不会中断
如果对于 一个(通信电路),他上面的 一个节点,如果坏掉,则通信就断掉了。
因此设计出了,我们之前讲过的(分组交换)。 即数据分组,通信可以共享同一条线路。
为了验证(分组交换)技术,做了一个测试: 搭建了一个网络(arpaNet 阿帕网),是互联网的鼻祖。
该测试,不仅证明 分组交换技术的稳定,还顺带研发出: tcp/ip协议。(该协议,最终成为arpaNet的唯一指定协议)
TCP/IP,其实是个(协议簇),包含很多的协议。
- 应用协议: http、telnet、smtp、ftp、snmp
- 传输协议: tcp、udp
- 网际协议: ip、icmp、arp
- 路由控制协议: rip、ospf、bgp
互联网与TCP/IP
interNet 互联网: 将多个网络组合,使之可以相互通信,从而形成一个更大的网络。
(比如,将两个公司的内网连接 形成一个互联网)
TCP/IP协议簇,就是为了可以使用互联网(即,让多个子网/内网,可以相互通信)
所以,互联网使用的协议 就是tcp/ip; tcp/ip就是互联网的协议。
与OSI对比
互联网层
互联网层,使用IP协议(IP协议是: 基于ip地址,转发数据)
所有连接到互联网的(主机、路由器),都必须实现IP功能,因为他们必须要实现:数据转发功能。
IP协议,使得:数据可以到达 地球的任意地方,他使用ip地址作为主机的标识
传输层
让(应用程序)之间 可以通信,而且 必须识别是(哪个程序)。
比如(浏览器 要和 浏览器对应),(邮件 要和 邮件对应)…
识别是哪个程序,是借助: 端口号。
tcp
正确的处理: 丢数据、分组数据顺序错乱等问题,保证 两端通信主机的 连接正常。
为了做到这种(可靠的 连接),在(建立连接、断开连接)时,他会多次的 额外的(收发 数据),导致 网络流量的浪费。
而且,协议内部,也是 非常非常复杂的各种逻辑。
他不适合: 视频会议!
udp
udp不会检查: 对方是否连接到网络、数据是否到达 (如果要检查,则需要在app
的层面上,额外的代码实现)
适用于: 广播、多播、视频通信(多媒体领域)
应用层
www
浏览器与服务端,使用的协议是:http。 所传输的数据格式是:html
(http在osi中 属于应用层,html属于 表示层)
telNet、ssh
远程登录
snmp
(simple netword manage) 网络管理。
使用snmp的设备(主机,路由器,网桥。。),称为: snmp代理
这个代理里,会存储: (通信数据量)(异常通信)(设备温度)等,这样管理员 就可以及时的检查网络拥堵情况,发现故障。
数据格式
发送
比如A给B发送“早上好”,
应用层
点击“发送邮件”: 将应用层的数据,发送给下一层(传输层)的TCP
发给下一层的数据是: [应用层data]
TCP层
收到的数据是: [应用层data]
tpc会附加一个(tcp首部),包括: (发送端 和 接收端的 端口号 “用来识别主机上的应用“)等
发给下一层的数据是: [TCP首部] [应用层data]
, 这个数据有个名字(TCP包)
IP层
收到的数据是:[TCP首部] [应用层data]
IP会附加一个:IP首部,包含(发送端 和 接收端的 ip地址)等
发给下一层的数据是: [IP首部] [TCP首部] [应用层data]
, 这个数据有个名字(IP包)
网卡层(以太网驱动)
加上一个:以太网首部,包含: (发送端 和 接收端的 mac地址)、(以太网类型)等 (以太网/数据链路层/网卡层),好像是一个概念
发给下一层的数据是: [以太网首部] [IP首部] [TCP首部] [应用层data]
, 这个数据有个名字(以太网包)
接收
网卡层(以太网驱动)
判断该(以太网包)的首部中的mac地址, 看是否是发给自己的数据 (如果不是,则丢弃)
然后再判断(数据类型), 比如, 如果是ip类型, 则将数据去除掉(以太网首部)后, 传给 (处理ip数据)的程序.
ip层
处理和上面是类似的. 判断该包的ip地址, 和自己的ip, 是否匹配, 否则就丢弃
然后, 将数据去掉(ip包首部)后, 传给tcp层处理.
tcp层
计算(校验和), 判断数据已经损坏. 获取(端口号), 从而定位到具体的应用程序
数据接收完毕后, 接收端会发送 (确认回执) 给发送端, 进行反馈.
SNS
SNS: social network service
社交网络. (即时的 将信息发给特定联系人)
当(移动手机/电脑) 在开机时, 运营商服务器就已经 为他设定了具体的ip地址.
当启动(应用程序)时, 会连接到 指定的SNS服务器, (进行 用户密码验证), 然后SNS服务器将数据发给终端.