设计思想

把一个复杂的事物进行分层划分,使得每个部分变得相对简单

分层模型

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协议栈基础知识的更多相关文章

  1. TCP/IP网络基础知识

    TCP/IP是一组用于实现网络互联的通信协议,通常称为TCP/IP协议族.包括TCP.IP.UDP.ICMP.RIP.TELNETFTP.SMTP.ARP.TFTP等. 一.TCP/IP模型将协议分为 ...

  2. 浅谈TCP IP协议栈(一)入门知识【转】

    说来惭愧,打算写关于网络方面的知识很久了,结果到今天才正式动笔,好了,废话不多说,写一些自己能看懂的入门知识,对自己来说是一种知识的总结,也希望能帮到一些想了解网络知识的童鞋. 万事开头难,然后中间难 ...

  3. UNIX/Linux网络编程基础:图解TCP/IP协议栈

    目录 1.主机到网络层协议:以太网协议 2.IP协议 3.网际控制报文协议(ICMP) 4.传输控制协议(TCP) 5.用户数据报文协议(UDP) 6.流控制传输协议(SCTP) 7.地址解析协议(A ...

  4. 计算机网络基础之TCP/IP 协议栈

    计算机网络基础之TCP/IP 协议栈 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.TCP/IP 协议栈概述 1>.什么是TCP/IP协议栈 Transmission C ...

  5. TCP/IP协议栈---网络基础篇(3)

    TCP/IP协议栈 在网络中实际使用的是TCP/IP,OSI是参考模型. TCP/IP协议栈 – 是由一组不同功能的协议组合在一起构成的协议栈 – 利用一组协议完成OSI所实现的功能 应用层协议 传输 ...

  6. 渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(5)

    前情回顾:一篇短短的博客明显不能满足TCP和UDP这两个饥渴的汉子,而且还被应用协议占了一小半的篇幅.在昨天结束之后,相信大家都基本对TCP/IP协议栈的轮廓有一个大概的印象了,能够对整体有所把握. ...

  7. TCP/IP协议基础(转)

    转自 http://www.chinaunix.net 作者:Bernardus160  发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...

  8. 【RL-TCPnet网络教程】第2章 嵌入式网络协议栈基础知识

    第2章        嵌入式网络协议栈基础知识 本章教程为大家介绍嵌入式网络协议栈基础知识,本章先让大家有一个全面的认识,后面章节中会为大家逐一讲解用到的协议. 基础知识整理自百度百科,wiki百科等 ...

  9. 理解TCP/IP协议栈之HTTP2.0

    1 前言 前面写了10多篇关于Redis底层实现.工程架构.实际应用的文章,感兴趣的读者可以进行阅读,如有问题欢迎交流: 1.Redis面试热点之底层实现篇-12.Redis面试热点之底层实现篇-23 ...

随机推荐

  1. [IR] Suffix Trees and Suffix Arrays

    前缀树 匹配前缀字符串是不言自明的道理. 1. 字符串的快速检索 2. 最长公共前缀(LCP) 等等 树的压缩 后缀树 Let s=abab, a suffix tree of s is a comp ...

  2. SQLAlchemy详细教程

    http://www.360doc.com/content/15/0914/16/360939_499094891.shtml

  3. lua迭代器和泛型for浅析

    (一) 首要概念要理清: 1. 在lua中,函数是一种"第一类值",他们具有特定的词法域."第一类值"表示在lua中函数与其他传统类型的值(例如数字和字符串)具 ...

  4. Servlet知识点回顾

    一.Servlet生命周期 服务器调用一个Servlet的8个步骤: 1.在服务器启动时,当Servlet被配置好或者被客户首次请求时,由服务器加载servlet,这一步相当于下列代码: Class ...

  5. redis如何后台启动

    当安装好redis之后,运行redis-server命令之后,显示如图所示: 但是这样没有办法在这个tab下做任何操作了,因为这个时候使用Ctrl+c之后,就变成了这个样子 然后就关闭了,那么我想让r ...

  6. MySQL 之 单表查询

    一.简单查询 -- 创建表 DROP TABLE IF EXISTS `person`; CREATE TABLE `person` ( `id` int(11) NOT NULL AUTO_INCR ...

  7. MSDN2001 快捷方式丢失的处理方法

    1.  C:\Windows\hh.exe,右键 - 发送快捷方式到桌面 2. 给快捷方式改名为:MSDN2001 3. 右键快捷方式 - 属性- 快捷方式选项卡中的目标填写: C:\Windows\ ...

  8. win10 开启蓝 由于其配置信息(注册表中的)不完整或已损坏

    在管理员命令提示符下键入以下命令: Dism /Online /Cleanup-Image /ScanHealth 这条命令将扫描全部系统文件并和官方系统文件对比,扫描计算机中的不一致情况. Dism ...

  9. MFC实现一元稀疏多项式运算器

    MFC实现一元稀疏多项式运算器 基本要求 输入并建立两个多项式 多项式a与b相加,建立和多项式c 多项式a与b相减,建立差多项式d 输出多项式a, b, c, d.输出格式:比如多项式a为:A(x)= ...

  10. 如何移植freertos

    要素: 1.两个主要的文件夹移动 2.freertos_config 复制,决定了系统时钟启动位置 3. 启动汇编复制替换 4.it中断管理文件 的相关三个中断注释掉 5.复制delay文件,主要是s ...