2.tcp/ip网咯七层模型

互联网协议

OSI七层模型

  • ip+mac可以标识全世界范围内独一无二的一台计算机的位置
  • port可以标识一台计算机之上唯一的一个基于网络通信的应用软件
  • ip+mac+port:可以标识全世界范围内独一无二的一个应用软件(基于网络通信)

image-20200604150012596

一、物理层

# 硬件:以太网路卡 · 调制解调器,光导纤维 · 同轴电缆 · 双绞线
# 功能:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等,这一层的数据叫做比特

二、数据链路层

# 以太网协议

# ethernet规定:
1 必须要有一块网卡,这块网卡要有一个独一无二的地址(mac地址)
2 一组电信号,构成一组数据包,叫做"帧"(数据包就是由一组010101二进制数组成)
3 每一个数据帧,被分为报头"head",数据"data"(请求头又可以叫做,请求报文)

# head包含:(固定18个字节)
发送者/源地址,6个字节
接收者/目标地址,6个字节
数据类型,6个字节

# data包含:(最短46字节,最长1500字节)
数据包的具体内容
head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

#### 什么是mac地址
head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址

mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

# 大白话:网卡的身份证号

# 广播
作用:局域网通信
计算机通信,基本靠吼

# 广播风暴是广播的一种故障

三、网络层

image-20200604154233550

# 网络层由来:有了ethernet、mac地址、广播的发送方式,世界上的计算机就可以彼此通信了,但是如果每台计算机都直接吼,不仅影响效率,还会是一场灾难(广播风暴)。

# 于是乎,网络层站出来:兄弟们不要害怕,我来解决广播风暴的问题,通过局域网的方式,隔离开所有的计算机,从而广播只能在局域网之间通讯。

# IP:是由4段,十进制的数字组成,每一段的范围是0~255。点分十进制,每一个点中都是由8位二进制数组成
192.168.1.12
#### 组成
# 网络位:识别子网
# 主机位:识别主机
注意:单纯的ip地址段只是标识了ip地址的种类,从网络部分或主机部分都无法辨识一个ip所处的子网
例:172.16.10.1与172.16.10.2并不能确定二者处于同一子网

# 子网掩码
所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。
##
255.255.255.0(24)
255.255.255.255(32)
255.255.0.0(16)
255.0.0.0(8)


# 子网掩码,和IP可以计算出网段

192.168.1.33
11000000.10101000.00000001.00100001
11111111.11111111.11111111.00000000
11000000.10101000.00000001.00000000
192.168.1.0



ipaddress:11000000.10101000.00000001.00001100
netmask:  11111111.11111111.11111111.00000000
计算结果:  11000000.10101000.00000001.00000000
192.168.1.0

# AND运算
按位与运算:&
与运算,二进制运算.可逆运算.1 & 1=1, 1 & 0=0, 0 & 0=0,0 & 1=0

# IP数据包
head:长度为20到60字节
data:最长为65,515字节。

# ARP协议(Address Resolution Protocol)
arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我门了解到

通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议

arp协议功能:广播的方式发送数据包,获取目标主机的mac地址

四、传输层

传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,

那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。

# 补充:端口范围0-65535,0-1023为系统占用端口

# tcp协议:可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
以太网头	ip 头	tcp头	数据


# udp协议:不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。
以太网头	ip头	udp头	数据

########## TCP协议的11种状态
# TCP三次握手
1.SYN_SENT
2.LISTEN
3.SYN_REVD
4.ESTABLISHED

# TCP四次挥手
1.FIN_WAIT_1
2.CLOSE_WAIT
3.FIN_WAIT_2
4.LAST_ACK
5.TIME_WAIT(TIME_WAIT多,证明服务器上有大并发)

关闭状态:
1.CLOSED(被动关闭端在接收到ack包后,进入CLOSED状态关闭TCP连接)
2.CLOSING(客户端和服务端同时发起断开连接)          # 很少有

五、会话层

#### 会话层主要三大功能:

1.建立会话:A、B两台网络设备之间要通信,要建立一条会话供他们使用,在建立会话的过程中也会有身份验证,权限鉴定等环节;

2.保持会话:通信会话建立后,通信双方开始传递数据,当数据传递完成后,OSI会话层不一定会立刻将两者这条通信会话断开,它会根据应用程序和应用层的设置对该会话进行维护,在会话维持期间两者可以随时使用这条会话传输局;

3.断开会话:当应用程序或应用层规定的超时时间到期后,OSI会话层才会释放这条会话。或者A、B重启、关机、手动执行断开连接的操作时,OSI会话层也会将A、B之间的会话断开。

六、表示层

###### 表示层主要三大功能:
1.内码转换
2.压缩与解压缩
3.加密与解密。

七、应用层

# 应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式

# 应用层功能:规定应用程序的数据格式。

# 例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了应用层。

以太网封装过程

image-20200604202526235

1

最终可以理解为:快递 发快递 拆快递

总结TCP/IP

tcp协议:

可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

以太网头 IP头 TCP头 数据

tcp报文

640

image-20200604172222100

1.源端口和目的端口:各占2个字节,分别写入源端口号和目的端口号。

2.序号:占4个字节。序号使用mod运算。TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。故该字段也叫做“报文段序号”。

3.确认序号:占4个字节,是期望收到对方下一个报文段的第一个数据字节的序号。若确认序号=N,则表明:到序号N-1为止的所有数据都已正确收到。

4.数据偏移:占4位,表示TCP报文段的首部长度。注意,“数据偏移”的单位是32位字(即以4字节长的字为计算单位)。故TCP首部的最大长度为60字节。

5.保留:占6位,保留为今后使用,目前置为0;

6.紧急URG:当URG=1,表明紧急指针字段有效。这时发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。

7.确认ACK:当ACK=1时,确认字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。

8.推送PSH:接收方TCP收到PSH=1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。

9.复位RST:当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。

10.同步SYN:在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。故SYN置为1,就表示这是一个连接请求和连接接收报文。

11.终止FIN:用来释放连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。

12.窗口:占2个字节。窗口值作为接收方让发送方设置其发送窗口的依据。

13.检验和:占2字节。检验和字段检验的范围包括首部和数据这两部分。和UDP数据报一样,在计算检验和时,也要在TCP报文段的前面加上12字节的伪首部。伪首部的格式与UDP用户数据报的伪首部一样,但要将伪首部第四个字段中的17 改为6(协议号),把第5字段中的UDP长度改为TCP长度。

14.紧急指针:占2字节。紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数。

TCP 三次握手

2

# 整个流程为:

1.客户端主动打开,发送连接请求报文段,将SYN标识位置为1,Sequence Number置为x(TCP规定SYN=1时不能携带数据,x为随机产生的一个值),然后进入SYN_SEND状态

2.服务器收到SYN报文段进行确认,将SYN标识位置为1,ACK置为1,Sequence Number置为y,Acknowledgment Number置为x+1,然后进入SYN_RECV状态,这个状态被称为半连接状态

3.客户端再进行一次确认,将ACK置为1(此时不用SYN),Sequence Number置为x+1,Acknowledgment Number置为y+1发向服务器,最后客户端与服务器都进入ESTABLISHED状态

握手完成后,开始TCP数据传输

3

TCP 四次挥手

4

# 当客户端没有数据再需要发送给服务端时,就需要释放客户端的连接,这整个过程为:

1.客户端发送一个报文给服务端(没有数据),其中FIN设置为1,Sequence Number置为u,客户端进入FIN_WAIT_1状态

2.服务端收到来自客户端的请求,发送一个ACK给客户端,Acknowledge置为u+1,同时发送Sequence Number为v,服务端年进入CLOSE_WAIT状态

3.服务端发送一个FIN给客户端,ACK置为1,Sequence置为w,Acknowledge置为u+1,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态

4.客户端收到FIN后,进入TIME_WAIT状态,接着发送一个ACK给服务端,Acknowledge置为w+1,Sequence Number置为u+1,最后客户端和服务端都进入CLOSED状态

TCP协议的11种状态

三次握手中:
1.SYN_SENT
2.LISTEN
3.SYN_REVD(syn洪水攻击)****半连接池
4.ESTABLISHED

四次挥手中:
1.FIN_WAIT_1
2.CLOSE_WAIT
3.FIN_WAIT_2
4.LAST_ACK
5.TIME_WAIT(TIME_WAIT多,证明服务器上有大并发)

关闭状态:
1.CLOSED(被动关闭端在接收到ack包后,进入CLOSED状态关闭TCP连接)
2.CLOSING(客户端和服务端同时发起断开连接)

猜你喜欢

转载自www.cnblogs.com/jkz1/p/13170761.html