学习视频连接
黑马程序员-Linux网络编程_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1iJ411S7UA?p=11
目录
一、协议
一组规则,例如世界语
二、分层模型结构
2.1 OSI七层模型
物、数、网、传、会、表、应
2.2 TCP/IP 4层模型
4层模型:网(链路层 / 网络接口层)、网、传、应
应用层:http、ftp、 nfs、ssh、 telnet
传输层:TCP、 UDP
网络层:IP、ICMP、 IGMP
链路层:以太网帧协议、ARP
三、网络传输数据封装
3.1 物理层
主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由 1、0 转化为电流强弱来进行传输,到达目的地后再转化为 1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特
3.2 数据链路层
定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输
3.3 网络层
在位干不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet 的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层
3.4 传输层
定义了一些传输数据的协议和端口号
四、以太网帧协议
4.1 ARP协议
根据 Ip 获取 mac 地址
4.2 以太网帧协议
根据 mac 地址,完成数据包传输
4.3 mac地址
唯一标识了一个网卡,所有网卡的 mac 地址是不一样的
五、 IP协议
5.1 版本
IPv4、IPv6
5.2 TTL
time to live,设置数据包再路由结点中的跳转上限。每经过一个路由结点,该值 -1,减少为 0 的路由有义务将该数据包丢弃。
下图中没有通路到目标主机,数据包只能在各个路由之间来回转发
5.3 IP字节数
源IP:32位 —— 4字节 (192.168.1.123)0~255.0~255.0~255.0~255
目的IP:32位 —— 4字节
5.4 发送的内容
16位:源端口号 2^ 16 = 65536
16位:目的端口号
32序号
32确认序号
6个标志位
16位窗口大小 2^ 16 = 65536
六、IP、端口号
6.1 IP地址
可以在网络环境中,唯一标识一台主机
6.2 端口号
可以网络的一台主机上,唯一表示一个进程
每个应用都有自己的端口号,数据包包含端口号用来告诉系统传过来的数据是给哪个软件的
6.3 ip+端口号
可以在网络环境中,唯一表示一个进程
七、UDP和TCP数据报格式
7.1 UDP
16位 源端口号
16位 目的端口号
7.2 TCP
八、CS/BS模型
九、TCP协议
9.1 TCP通信时序
下图是一次 TCP 通讯的时序图。TCP 连接建立断开。包含大家熟知的三次握手和四次握手
SOCK_STREAM与SOCK_DGRAM套接字 - 简书 (jianshu.com)https://www.jianshu.com/p/046f37121259
不进行三次握手的传输是不可靠传输,以包的形式发送,过程中有的包会丢失,应用于视频或者音频有一部分损失,但不影响整体。进行三次握手的传输是可靠传输,四次握手,最后一次是用来断开连接(半关闭)
1、三次握手
主动发起连接请求端,发送 SYN 标志位,请求建立连接。携带序号号、 数据字节数(0)、滑动窗口大小
被动接受连接请求端,发送 ACK 标志位,同时携带 SYN 请求标志位。携带序号、确认序号、数据字节数(0)、滑动窗口大小
主动发起连接请求端,发送 ACK 标志位,应答服务器连接请求。携带确认序号
2、四次挥手
主动关闭连接请求端,发送 FIN 标志位
被动关闭连接请求端,应答 ACK 标志位 —— 半关闭完成
被动关闭连接请求端,发送 FIN 标志位
主动关闭连接请求端,应答 ACK 标志位 —— 连接全部关闭
9.2 滑动窗口
客户端发送数据很快,服务端处理数据很慢,存储客户端数据的缓冲区很快就满了。
为了防止数据丢失,一直发送服务器剩余缓冲区的大小,即划动窗口的大小