TCP/IP协议栈基础知识
设计思想
把一个复杂的事物进行分层划分,使得每个部分变得相对简单
分层模型
OSI分为7层模型 tcp/ip分为四层模型
应用层(Application)
传输层(Transport)
网络层(Internet)
网络访问层(Network Access)
TCP特性
1.工作在传输层
2.面向连接协议
在通讯的过程中有一个协商的过程,需要确保两者之间有一个稳定的,可靠的连接状态.
3.全双工的协议
可以同时双向发送数据
4.半关闭
关闭是单方向的 一方关闭连接只表示关闭方不再发送数据,但不代表不接收对方的数据包.
5.错误检查
6.将数据打包成段,排序
7.确认机制
8.数据恢复,重传
9.流量控制,滑动窗口
10.拥塞控制,慢启动和拥塞避免算法
TCP包头
0-15 16个位 2个字节 表示源端口 2^16 = 65536个端口号
16-31 16个位 2个字节 表示目标端口
32位 4个字节 表示当前本机发送数据包的编号
32位 4个字节 表示确认号 标识对方主机发送的数据包的编号 告诉对方主机下次需要发送数据包的编号
4位 数据偏移 表示tcp包的头部有多长
前面固定有20个字节的长度 + 不固定长度的选项长度
三个重点标记位: 实现TCP可靠传输的关键
ACK 确认接收标志
SYN 同步请求标志
客户端向服务端发送第一个连接TCP数据包的时候会把SYN变成1
服务端响应客户端发送的连接第一个TCP包头中的SYN也等于1
FIN 结束连接标志
使用tcp发送数据之前,必须先通过三次握手 然后才能进行数据的发送和接收
TCP三次握手
第一次握手: 客户端给服务端发送第一个同步消息把SYN设为1
第二次握手: 服务端给客户端发送回应的消息把SYN设为1 ACK设为1 表示服务端能正常接收客户端的数据包
第三次握手: 客户端回应服务端消息把ACK设为1 表示客户端能正常接收服务端的数据包
1.客户端 SYN 2.服务端 SYN ACK 3.客户端 ACK
TCP四次挥手
1.建立连接一般是由客户端首先向服务器端发起请求的,服务器端只进行监听.
2.但是断开连接的分手请求可以是任意方(可以是客户端也可以是服务端)来首先发起的,谁先把数据传输完成,谁就可以发送断开连接请求的数据包
3.首先发送FIN=1的一方 表示自己不再会向对方发送任何数据,但是还会接收对方发送过来的数据 (半关闭的特性)
4. 2MSL时间表示是消息的最大生存期 1个MSL表示两个数据包正常发送的时间
5.首先提出断开连接方最后需要等待2MSL的时间是因为理论上对方会先把还没发完的数据先发给自己最后才会发送FIN=1的数据包,但是
每个数据包在传递的过程中选择的路径是不一样的,可能会出现数据包先发后到的情况.
这段时间是用来接收可能在FIN=1包到达后其它还没有到达本机的数据包.
6.A FIN B ACK B FIN A ACK
TCP的SYN(同步攻击)
当客户端向服务端首先发起一个SYN的同步消息后,服务器会立刻向客户端返回ACK消息同时等待客户端返回ACK消息.
在服务器等待客户端ACK消息的这段时间,服务器需要消耗一定的内存空间来存储当前的连接信息.此时如果客户端是一些
大量不存在的主机,那么服务器迟迟得不到客户端ACK响应导致内存无法释放这些资源最终把服务器的内存空间消耗干净.
TCP确认
Winodow Size 的值 表示TCP每次可以发送的数据包的个数,而不是一个包一个包的发送,提高数据包的发送效率
UDP传输协议
UDP包头
16bit 2个字节 源端口
16bit 2个字节 目标端口
16bit 2个字节 内容长度
16bit 2个字节 checksum
data 发送内容
UDP特性
1.工作在传输层
2.提供不可靠的网络访问
3.非面向连接的协议
4.有限的错误检查
5.传输性能高 没有tcp协议的握手机制
6.无数据恢复的特性
IP网络层协议
切片发送大数据包
DOS拒绝服务攻击
通过ping命令不断的向服务器发送大量的大数据包,由于客户端每次向服务器发送一个包服务器就必须要响应一个包.造成占用服务器大量的cpu和网卡资源.
TCP/IP协议栈基础知识的更多相关文章
- TCP/IP网络基础知识
TCP/IP是一组用于实现网络互联的通信协议,通常称为TCP/IP协议族.包括TCP.IP.UDP.ICMP.RIP.TELNETFTP.SMTP.ARP.TFTP等. 一.TCP/IP模型将协议分为 ...
- 浅谈TCP IP协议栈(一)入门知识【转】
说来惭愧,打算写关于网络方面的知识很久了,结果到今天才正式动笔,好了,废话不多说,写一些自己能看懂的入门知识,对自己来说是一种知识的总结,也希望能帮到一些想了解网络知识的童鞋. 万事开头难,然后中间难 ...
- UNIX/Linux网络编程基础:图解TCP/IP协议栈
目录 1.主机到网络层协议:以太网协议 2.IP协议 3.网际控制报文协议(ICMP) 4.传输控制协议(TCP) 5.用户数据报文协议(UDP) 6.流控制传输协议(SCTP) 7.地址解析协议(A ...
- 计算机网络基础之TCP/IP 协议栈
计算机网络基础之TCP/IP 协议栈 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.TCP/IP 协议栈概述 1>.什么是TCP/IP协议栈 Transmission C ...
- TCP/IP协议栈---网络基础篇(3)
TCP/IP协议栈 在网络中实际使用的是TCP/IP,OSI是参考模型. TCP/IP协议栈 – 是由一组不同功能的协议组合在一起构成的协议栈 – 利用一组协议完成OSI所实现的功能 应用层协议 传输 ...
- 渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(5)
前情回顾:一篇短短的博客明显不能满足TCP和UDP这两个饥渴的汉子,而且还被应用协议占了一小半的篇幅.在昨天结束之后,相信大家都基本对TCP/IP协议栈的轮廓有一个大概的印象了,能够对整体有所把握. ...
- TCP/IP协议基础(转)
转自 http://www.chinaunix.net 作者:Bernardus160 发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...
- 【RL-TCPnet网络教程】第2章 嵌入式网络协议栈基础知识
第2章 嵌入式网络协议栈基础知识 本章教程为大家介绍嵌入式网络协议栈基础知识,本章先让大家有一个全面的认识,后面章节中会为大家逐一讲解用到的协议. 基础知识整理自百度百科,wiki百科等 ...
- 理解TCP/IP协议栈之HTTP2.0
1 前言 前面写了10多篇关于Redis底层实现.工程架构.实际应用的文章,感兴趣的读者可以进行阅读,如有问题欢迎交流: 1.Redis面试热点之底层实现篇-12.Redis面试热点之底层实现篇-23 ...
随机推荐
- android 网络图片双缓存
本文转自:http://blog.csdn.net/a79412906/article/details/10180583 Android每次加载图片很浪费时间.所以设计了一个图片缓存技术来解决每次an ...
- Caused by: java.lang.ClassNotFoundException: javax.xml.bind.Validation
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.Validation JAXB API是java EE 的API,因此在java ...
- Hook lua库函数时遇到的问题
最近在为distri.lua实现一个lua调试系统,有一个简单的需求,lua导入一个文件的时候,将这个文件的文件名记录下来, 以方便调试器在设置断点的时候判断是否一个合法的文件. lua导入文件是通过 ...
- Unity3D 批处理场景的工具
//场景的批量处理器 public static class OperateScene { public const string SceneDir = "Assets/Scene/&quo ...
- jmeter之结果重定向
在使用jmeter与jenkins对接时,发现默认打印出来的日志就是正常的summary统计,如果要查看日志,只能通过jmeter.log去查看. 来来来,我们一起温习下jmeter的命令行参数 -- ...
- 7.11登入表单html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 6.26 py GIL
在python中,多进程效率远大于多线程效率 python中存在GIL这个"线程锁", 关键地方可以使用c语言解决 GIL问题 然后可以提高cpu占用效率 异步的实现!!! 同 ...
- day_5.10py 爬妹子图片 mm131
#目前学的爬虫还有潭州教育的直播课,都是千篇一律的requests urllib 下面这个也是,还没有我后面的下载网易云歌单爽来都用到多线程了不过可以用协程,完全异步 1 #!/usr/bin/env ...
- [No000015C]计算机科学关键领域
- linux进程状态D
运行在KVM虚拟机里的一些进程突然出了问题,这些出了问题的进程无法用kill杀掉,使用ps可以看到这些进程处于D状态: [build@kbuild-john ~]$ ps -a -ubuild -o ...