最近在看TCP/IP协议详解...此系列文章可以看成笔记+自己的一些理解吧...
1. 什么是TCP/IP协议.
我觉得可以抛开TCP/IP这几个字眼就理解,知道他是网络协议的一种就可以了,网络协议,无外乎就是使不同操作系统,不用网络结构(网状,星形)
进行互联而已.
2. 分层.
1) 分层结构图:
2) 为什么要分层:
个人觉得可以按照JAVA中的分层来理解,层与层之间有预先设定好的接口,如应用层调用运输层不用管运输层如何实现只需调用接口就可以了.
这样的好处是,一旦有新技术可以提高效率,只需修改对应的层就行,别的层不用修改.
3. 以FTP为例,看下网络上2台机器的链接.
1) 实例图:
2) 说明:
如图所示,我们在进行链接的时候,貌似2太机器用FTP链接,实际上,真正链接的是链路层...
4. IP地址分类:
A: 0.0.0.0 - 127.255.255.255
B: 128.0.0.0- 191.255.255.255
C: 192.0.0.0- 223.255.255.255
D: 224.0.0.0- 239.255.255.255
E: 240.0.0.0- 247.255.255.255
5. 数据进入协议栈时的封装过程
当应用程序用TCP传送数据时,数据被送入协议栈(TCP/IP协议栈)中,然后逐个通过每一层直到被当作一串比特流送入网络.
其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),
TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP segment).IP传给网络接口层的数据单元称作IP数据报(IP datagram).
通过以太网传输的比特流称作帧(Frame).
IP在首部中存入一个长度为8bit的数值,称作协议域:
1表示为ICMP协议
2表示为IGMP协议
6表示为TCP协议
17表示为UDP协议
类似地,许多应用程序都可以使用TCP或UDP来传送数据.运输层协议在生成报文首部时要存入一个应用程序的标识符.
TCP和UDP都用一个16 bit(哇哈,找到端口号为什么只能是0-65535的原因了....)的端口号来表示不同的应用程序。
TCP和UDP把源端口号和目的端口号分别存入报文首部中。
网络层和运输层之间的区别是最为关键的:
网络层(IP)提供点到点的服务,而运输层(TCP和UDP)提供端到端的服务.(说的真好,值得推敲啊...)