IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Linux网络编程-TCP相关知识 -> 正文阅读

[网络协议]Linux网络编程-TCP相关知识

线程同步

在这里插入图片描述

与时间有关的、空间有关,资源共享、调度随机、缺乏必要的同步机制。
在这里插入图片描述

协议

是一组规则,学习它的规范,按它的规范写代码。比如双方规定先发什么后发什么,先发文件名,再发大小最后发内容。
在这里插入图片描述

典型协议

传输层:TCP、UDP

分层模型结构:

OSI七层模型:open system interconnection,内容:物、数、网、传、会、表、应。
编写程序一般用:TCP/IP4层模型:网络接口层(物理层、数据链路层)、网络层、传输层、应用层(会话层、表示层、应用层)。
应用层:http,ftp,nfs,ssh,telnet
传输层:tcp,udp
网络层:IP,ICMP,IGMP
链路层:以太网帧协议,ARP协议

c/s模型:client-server
b/s模型:browser-server

c/s模型

优点:可缓存大量数据、协议选择灵活(自己封装协议)、速度快
缺点:安全性、不跨平台、开发工作量大

b/s模型

优点:安全性高、跨平台、开发工作量较小
缺点:不能缓存大量数据、严格遵守http协议

通信过程

在这里插入图片描述

必须对数据进行封装才能传输,逐层向下。
分别应用层、传输层、网络层、数据链路层各层封装,到达之后逆序解封。

以太网帧和ARP请求

数据
源地址是自己主机的mac地址,然后目的地址需要查询ARP协议得到。
ARP地址:根据IP地址查找MAC地址。
在这里插入图片描述
查询方式:
ff:ff:ff:ff:ff:ff-源主机mac地址-0806-8字节-源主机mac地址-源主机IP地址-ff:ff:ff:ff:ff:ff-对方IP地址,发送到路由器,路由器里面有路由表,路由器发一个广播,每个收到的都会比对最后的ip地址,如果对上,则应答即往回发。

ip地址

版本:ipv4,ipv6
TTL:time to live:设置数据包在路由节点的跳转上线,每经过一个路由节点,该值减一,减为0的路由,有义务将其丢弃。
源IP:32位 ---- 4字节
目的IP:32位 ---- 4字节

IP地址:可以在网络环境中,标识一台主机。
端口号:可以在网络的一台主机上,唯一标识一个进程。
IP地址+端口号:可以在网络环境中,唯一标识一个进程。

UDP

16位:源端口号 2^16=65536
16位:目的端口号 2^16=65536

TCP

16位:源端口号 2^16=65536
16位:目的端口号 2^16=65536
32位序号:
32位确认序号:
6个标志位:
16位窗口大小:

网络套接字

一个文件描述符指向一个套接字,成对出现。

网络字节序

大小端存贮,网络字节序用的是大端字节序。
在这里插入图片描述
ip地址转换函数:
在这里插入图片描述
af指定协议类型:AF_INET
src:传入,IP地址
dst:传出,转化后的字节序ip地址。
size:dst的大小
返回值:
成功:1
异常:0,说明src执行的不是有效地址
失败:-1

三次握手

假设客户端先给服务器发送报文。
首先,客户端给服务器发送SYN报文,序列号假设为100,此即第一次握手;服务器收到后会向客户端发送ACK报文,此ACK报文里,确认序列号为101,序列号假设为800,此即第二次握手;客户端收到ACK报文后,也会向服务器发送一个ACK报文,序列号为101,确认序列号为801,此即第三次握手。第三次握手里有个细节需要注意,就是:第三次握手可能带有数据,也可能不带有数据。进行第三次握手时,客户端已经建立好连接,向服务器发送的ACK报文不带数据,然后发完ACK报文一般会立即发送数据报文。这其中的情况是ACK报文可能没有到达服务器,则数据报文除了带有数据外,还应该确认序列号为801。此数据报到达服务器也可代表成功完成第三次握手,也就是说第三次握手可能会带有数据。

滑动窗口

在这里插入图片描述

TCP数据报头里面有源和目标ip(32位),序列号(32)、确认序列号(32位),六个标志位(6位),校验和(16位),滑动窗口大小(16位),滑动窗口是为了向对方说明自己的缓冲区大小,就是两主机间的通信不可能是一来一回那么协调的,一般会像下面这样,发送方发数据包会发送到对方窗口最大值才停下来,接收方则是连续接受再返回确认报文。此即滑动窗口。
cdsacd

四次挥手

一方先发FIN报文,另一方接收后发送ACK报文,发送端断开写缓冲区,半关闭完成。此时socket仍然保存,另一方再发送FIN报文,接收端发送ACK报文,此即另一个半关闭,从此此socket关闭完成。

TCP通信时序

在这里插入图片描述

TCP通信双方的状态转换图

在这里插入图片描述
这些个状态可以通过命令:netstat -apn | grep 8000(端口号)来具体查看。
在这里插入图片描述

在这里插入图片描述
如果是服务器先关闭,会导致那个端口号处于time_wait状态,从而bind()函数出错。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 12:24:57  更:2021-08-19 12:26:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 19:04:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码