TCP/IP协议学习(-)

TCP/IP协议一直困扰着我,特别后悔大学时期没有好好听计算机网络课程,上班之后只能狂补这些基础知识,最近把计算机网络基础知识啃了一遍,下面写出自己最近学习的知识吧。

网络协议

   TCP/IP翻译成中文就是传输控制协议/因特网互联协议,这个家族里面有很多知名协议例如HTTP,HTTPS,FTP,UDP,ARP等。TCP/IP是当前流行的网络传输协议框架,从严格意义上来说是一个协议族。因为TCP、IP是其中最为核心的协议,所以才把该协议族称为TCP/IP。在计算机网络技术一书中提到过ISO/OSI的七层传输协议,我记得大学那会考试还考过,不过他现在已经被淘汰了,这里就不在说了,有兴趣的可以查一下。

   说到TCP/IP就不得不提一下经典的TCP/IP协议分层框架,下面就是TCP分层框架图

TCP/IP协议学习(-)

咱们从下向上说

链路层:链路层以字节为单位把0和1进行分组,定义数据帧,写入源和目标机器的物理地址、数据、校验位来传输数据。下面是以太网的帧协议

TCP/IP协议学习(-)

MAC地址长6个字节共48位,通常使用十六进制数表示。在linux系统下面使用ifconfig -a命令即可看到MAC地址。其前24位由管理机构统一分配,后24位由厂商自己分配,保证网卡全球唯一,说白了,网卡就像家庭地址一样,是计算机世界范围内的唯一标识。

网络层:根据IP定义网络地址,区分网段。子网根据地址协议解析(ARP)进行MAC寻址,子网外进行路由转发数据包,这个数据包就是IP数据包。

传输层:数据包通过网络层发送到目标计算机后,应用程序在传输层定义逻辑端口,确认身份后,将数据包交给应用程序,实现端口到端口的通信。最经典的传输层协议就是TCP和UDP。UDP只是在IP数据包上增加端口等部分信息,是面向无连接的。是不可靠传输,多用于视频通信,电话会议等。与之相反,TCP是面向链接的。什么叫做面向链接呢,其实就是一种端到端通过失败重传机制建立的可靠传输方式,给人的感觉是有一种固定的通路承载着数据的可靠传输。

应用层:传出层的数据到达应用程序时,以一种统一规定的协议格式解读数据。例如邮件,E-mail在各个公司的程序界面操作、管理方式都不一样,但是都能够读取邮件内容,是因为SMTP协议就像传统的书信格式一样,按规定填写邮编和收件人信息。

总结来说,程序在发送消息时,应用层按照既定的协议打包数据,随后由传输层加上双方的端口号,由网路层加上双方的ip地址,由链路层加上双方的MAC地址,并且将数据拆分成数据帧,经过多个路由和网关后,到达目标机器。简单来说就是 端口->IP地址->MAC地址 这样的路径进行数据的封装和发送,解包的时候反过来即可。

下一节再说IP协议,困了,先睡了