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 ...
随机推荐
- [Full-stack] 世上最好语言 - PHP
前言 本篇是对个人PHP, Laravel系列博文的总结与思考. 目的在于理清并熟练如下过程: "需求 --> Usercase --> UI --> 框架 --> ...
- SpringBoot------拦截器Filter的使用
前言: 最新Servlet 3.0拦截器的使用 1.pom.xml添加需要使用的依赖 <project xmlns="http://maven.apache.org/POM/4.0.0 ...
- [原]jenkins(五)---jenkins添加项目
/** * lihaibo * 文章内容都是根据自己工作情况实践得出. http://www.cnblogs.com/horizonli/p/5332258.html 版权声明:本博客欢迎转发,但请保 ...
- Unity3D Shader 内置函数
Intrinsic Functions (DirectX HLSL) The following table lists the intrinsic functions available in HL ...
- day_6.10py面试题:访问百度的过程
DNS : 解析域名 DHCP:一种协议,自动分配ip 发现局域网中没有ip的电脑分配ip 面试题: 访问百度的整个过程 打开浏览器,访问百度的过程: 1.我的电脑确定有无网关,arp得到默认网管ma ...
- 遍历form表单里面的表单元素,取其value
form.elements 获取所有表单元素 form 表单 <form action="http://localhost:1995/api/post" class=&quo ...
- SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用
由于项目的需要,登录SharePoint Application的用户将从一个统一平台中获取,而不是从Domain中获取,所以需要对SharePoint Application的身份验证(Claims ...
- 现在越来越喜欢用ajax传值了,这样能让网站的体验性很好,今天就总结了一下常用的
这是不用循环的方法 就是传过来的是一位数组 //编辑党建分类 function gk_bj(id){ $.post("{:U('Luser/lei_edlt')}",{id:id} ...
- db2 删除过期的日志和备份文件(转)
DB2 删除过期备份和日志 $ db2 list history archive log all forpayment2 ------列出归档日志 $ db2 list history back ...
- 非节点主机通过内网远程管理docker swarm集群
这是今天使用 docker swarm 遇到的一个问题,终于在睡觉前解决了,在这篇随笔中记录一下. 在 docker swarm 集群的 manager 节点上用 docker cli 命令可以正常管 ...