标签:双绞线 连接池 释放 厂商 服务 protocol ip地址 mac net
# 硬件:以太网路卡 · 调制解调器,光导纤维 · 同轴电缆 · 双绞线
# 功能:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等,这一层的数据叫做比特
# 以太网协议
# 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进制数表示(前六位是厂商编号,后六位是流水线号)
# 大白话:网卡的身份证号
# 广播
作用:局域网通信
计算机通信,基本靠吼
# 广播风暴是广播的一种故障
# 网络层由来:有了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数据的格式,这些应用程序协议就构成了应用层。
最终可以理解为:快递 发快递 拆快递
可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
以太网头 IP头 TCP头 数据
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时才有意义,它指出本报文段中的紧急数据的字节数。
# 整个流程为:
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状态
# 当客户端没有数据再需要发送给服务端时,就需要释放客户端的连接,这整个过程为:
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状态
三次握手中:
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(客户端和服务端同时发起断开连接)
标签:双绞线 连接池 释放 厂商 服务 protocol ip地址 mac net
原文地址:https://www.cnblogs.com/jkz1/p/13170761.html