1、TCP/IP五层协议

TCP/IP五层协议自底而上分别为Physical Layer(物理层)Data Link Layer(数据链路层)、Network Layer(网络层)、Transport Layer(传输层)和Application Layer(应用层)。
                                                          Fig.流程图

(1)物理层

规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。

(2)数据链路层

在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。
1.以太网协议:规定了多少电信号为一组,数据包被称为帧(Frame)。
其中head被称为标头,主要提供了发送者、接收者以及数据类型等信息,data为数据内容。head长度为18字节,data长度为46~1500字节。
2.MAC地址:即网卡地址,全世界独一无二,采用48个二机制位表示,通常用12个16进制位表示。前6为为厂商编号,后6为为厂商网卡流水号
3.广播:即broadcasting。在同一子网内,通过最为原始等方式,把数据发送到整个子网,让接收方根据MAC确定。

(3)网络层

1.作用:为每台计算机分配IP;确定哪些计算机在同一子网。
2.网络地址:简称网址,用来确定计算机子网络。
3.IP协议:规定网络地址的协议,所定义的地址成为IP地址。其中IPv4由32个二进制位组成,通常用4个10进制位表示,范围为0.0.0.0~255.255.255.255。
    IP数据包同样包括标头和数据两部分,其中标头包含版本号、长度和IP地址等。head长度为20~60字节,data最大为65535字节。
    IP数据包是放入以太网数据包数据部分,此时以太网数据包如下:
4.子网掩码:表示子网络特征的一个参数,用32个2进制位表示,形式上类似IP地址。网络部分全部位1,主机部分全部为0
                     因此,可以通过对两台主机分别进行IP地址和子网掩码做AND运算,来判断这两台主机是否在同一子网内。
5、ARP协议:
    1)两台主机不在同一子网内
    只能把数据包传到两个网络间网管处处理。
    2)两台主机在同一子网内
    通过ARP协议,采用6组16进制表示这是一个广播地址,子网内每台主机都会收到。如果接受方发现IP地址与自己相同,则把MAC地址上报。
6.端口:
    端口范围为0~65535,正好为16个二进制位,其中0~1023被系统占用,1024~65535可以被其他应用使用。

(4)传输层

1.作用:进行端口到端口到通信,如127.0.0.1:10247-->biezhi.me:443。传输层主要有UDP协议和TCP协议
2.UNIX系统把主机+端口称为套接字socket。
3.UDP协议:
    UDP数据包同样包括标头和数据两部分,其中标头包含发出端口、接收端口等,UDP数据包放入IP数据包数据部分。
其中标头为8个字节,整个UDP数据包长度最大为65535字节(正好为IP数据包数据部分的最大长度)。现在以太网数据包结构如下:

4.TCP协议:
    TCP数据包和UDP一样,内嵌在IP数据包数据部分。但是TCP数据包长度无限制,理论上可以无限长。通常为了效率,TCP数据包长度不会超过IP数据包数据部分长度。
相对于UDP而言,保证了数据不会丢失,可以认为有确认机制的UDP;缺点则是过程复杂,实现困难,消耗较多资源。
5.TCP与UDP比较
TCP
UDP 备注
面向连接;
面向无连接;
TCP提供了检查和重传机制,
序号标示,滑动窗口,确认应答。
提供可靠服务;
不保证可靠;
点对点;
一对一,多对一,多对多
资源消耗较高;
资源消耗较少;


实时性强;
6.TCP的三次握手和四次挥手(重点)
TCP的三次握手:
  • 第一次握手:建立连接时,客户端发送SYN(请求同步)包到服务器,并进入SYN_SENT(请求连接)状态,等待服务器确认;
  • 第二次握手:服务器收到收到SYN包,必须确认客户端的SYN(x+1),同时自己也发送一个SYN包(SYN=y),即SYN+ACK包,此时服务器进入SYN_RECV(SYN派遣)状态;
  • 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(y+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。客户端与服务器才正式开始传输数据。
  • 理想状态下,TCP连接一旦建立,在通信双方中任何一方主动关闭连接之前,TCP连接都将被一直保持下去。
    
TCP的四次挥手:
  • 第一次挥手:主动关闭方调用close,会发送一个长度为0的数据包以及FIN(结束标志),用来关闭主动方到被动关闭方的数据传送(注意:此时主动关闭方还可以接受数据);
  • 第二次挥手:被动关闭方收到FIN包,发送一个ACK给对方,确认序号为收到序号+1;
  • 第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方到数据传送;
  • 第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

(5)应用层

1.应用层数据包放入TCP数据包数据部分,现在以太网数据包如下:
2.不同子网间通信

场景 数据包地址
同一子网
对方MAC、对方IP
同一子网
网关MAC、对方IP
3.动态IP地址
    1)使用DHCP协议,申请IP地址、子网掩码、网关、DNS服务器;
    2)如何发给对方DHCP服务器呢?
    因为DHCP为应用层协议,在UDP协议之上,具体为:
4.本地浏览器输入google网址,到看到网页发生了什么?
    1)DNS协议,把网址转换为IP地址。DNS协议如下:
    2)Http协议
    如果Http数据包长度为4960字节,TCP标头为20字节,IP标头为20字节,则为5000字节。我们知道,以太网数据包最大长度为1500字节。
那么就需要做分割。


二、OSI七层模型



三、TCP/IP协议和OSI七层模型的关系