TCP/IP协议

定义:

transmission control protocol / Internet protocol, 中文译名为传输控制协议/因特网互联协议,又名网络通讯协议。是internet的最基本协议。

TCP/IP五层模型讲解

这里将应用层、表示层、会话层并作应用层。

TCP/IP协议

1、物理层

功能:基于电器特性发送高低电压信号,高电压对应”1“,低电压对应”0“,数据的单位称为比特(bit)。

(中继器、集线器、还有我们通常说的双绞线也工作在物理层)

2、数据链路层

数据链路层的由来:

单纯的0和1没有任何意义,必须规定电信号多少位一组,每组什么意思。

功能:

定义电信号的分组方式

以太网协议(Ethernet):

一组电信号构成一个数据包,叫做帧。

每一数据帧都分为:报头(head)和数据(data)俩个部分

其中,head(18个字节)包含 发送者(源地址)6个字节、接收者(目标地址)6个字节、数据类型6个字节。

data包含最短46个字节,最长1500个字节。

head+data最短64个字节,最长1518个字节,超过最大限制就分片发送。

 

mac地址:

指的是head中源地址和目标地址,也即网卡的地址。每张网卡都有世界上唯一的mac地址,长度为48为二进制。

广播:

假设pc1、pc2、pc3、pc4都连接同一个交换机,pc1发送head+data(head中的目标地址是pc2的mac地址)给pc2、pc3、pc4,但是pc3、pc4拆开后发现目标mac地址不是自己就会丢弃,pc2发现目标地址是自己就响应。

3、网络层:

因特网是由一个个彼此隔离的局域网组成,以太网包只能在一个局域网内发送。一个局域网是一个广播域,以太网的广播包只能在广播域内发送,跨广播域的通信只能通过路由转发

由来:

有了mac地址、以太网协议、广播的发送方式,就可以让世界上任意两台电脑通信了,但是如果所有通信都采用以太网的广播方式,那么效率会非常低下。

所以必须找出一种办法来区分哪些计算机术语同一个广播域。如果两个要通信的电脑是同一个广播域就用广播的方式发送,如果不是就通过路由的方式转发。

功能:

用一套新的地址来区分不同的广播域,这套地址就是网络地址。

ip协议:

规定网络地址的协议叫ip协议,它规定的地址也叫ip地址。ip地址由32位2进制数表示。

范围 0.0.0.0 ----255.255.255.255

子网掩码:

用来标识ip地址哪些位代表网络位,哪些位代表主机位。它是结合ip地址一起使用,目的是将一个ip地址划分为网络地址和主机地址。

区分网络位和主机位的目的是为了划分子网,就是把一个大网络划分为多个小网络。

TCP/IP协议

如图,划分子网本质就是借主机位到网络位,每借一位主机位,这个网段可以分配的主机数就会减少。

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)
A、B、C三类中IP地址=网络地址+主机地址,而D、E两类不区分网络地址和主机地址
特殊说明:
(1)A类中的 10.X.X.X是私有地址;127.X.X.X是保留地址
(2)B类中的 172.16.0.0~172.31.255.255是私有地址
(3)C类中的 192.168.X.X是私有地址

4、传输层

由来:

网络层的ip用来区分子网,以太网的mac用来找到主机,但是我们使用的是应用程序(qq,weixin,LOL,等)。

当通过ip和mac找到主机的时候,需要用端口标识主机上的应用程序,端口是应用程序和网卡关联的编号。

功能:

建立端口到端口的通信。

例如:传输层协议的数据包(udp或tcp)同样分为头部(header)和数据(payload)两部分。这意味着数据包需要经过IP协议的封装(encapsulation),然后通过ip传输到目的电脑。随后UDP包或tcp包在目的电脑拆封,并将信息送到相应端口的缓存中。

tcp协议

所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:

TCP/IP协议

1、建立连接时,客户端发送SYN包(SYN=i)到服务器,并进入到SYN-SEND状态,等待服务器确认

2、服务器收到SYN包,自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器进入SYN-RECV状态,而且等待确认客户的SYN(ack=i+1),

3、客户端收到服务器的SYN+ACK包,向服务器发送确认报ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据。

所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发,整个流程如图所示:

(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

udp协议:

不可靠传输,报头部分一共8个字节,总长度不超过65535个字节,正好放进去一个ip数据包。

上一篇:游戏服务器被攻击了解决方法


下一篇:面试感受