设计思想

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

分层模型

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. [hadoop] hadoop native libraries 编译

    安装hadoop启动之后总有警告:Unable to load native-hadoop library for your platform... using builtin-Javaclasses ...

  2. [UFLDL] ConvNet

    二十三(Convolution和Pooling练习)  三十八(Stacked CNN简单介绍) 三十六(关于构建深度卷积SAE网络的一点困惑) 五十(Deconvolution Network简单理 ...

  3. Texture::setUnRefImageDataAfterApply

    当该值设置为true时,OSG在应用过该纹理对象后(apply),自动释放其对Image对象的引用,以减少内存占用

  4. linux后台执行命令:&和nohup

    当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件.对于密集访问磁盘的进程,我们更希望它能够在每天的非负荷高峰时间段运行(例如凌晨).为 ...

  5. 【CF587D】Duff in Mafia 二分+前缀优化建图+2-SAT

    [CF587D]Duff in Mafia 题意:给你一张n个点m条边的无向图,边有颜色和边权.你要从中删去一些边,满足: 1.任意两条删掉的边没有公共的顶点.2.任意两条剩余的.颜色相同的边没有公共 ...

  6. linux如何查看某个端口是否开放

    1.你可以使用 lsof 命令来查看某一端口是否开放.查看端口可以这样来使用,我就以80端口为例: lsof -i:80 或者 lsof -i:22如果有显示说明已经开放了,如果没有显示说明没有开放 ...

  7. Python零基础入门学习 作者:小甲鱼

    temp = input('不妨想一想小甲鱼现在心里想的哪一个数字:') guess = int(temp) if guess == 8: print('你是小甲鱼心里的蛔虫吗?') print('哼 ...

  8. 7.9CSS总结

    2018-7-9 18:01:18 1.类选择器是 用  .      .xxx{}  (ps,公司常用的是类选择  ) 2.id选择器是用  #   #xx{}  (id选择器并不常用) 3.css ...

  9. Javascript合并表格相同内容单元格示例

    效果图: HTML代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  10. 文本分类学习 (八)SVM 入门之线性分类器

    SVM 和线性分类器是分不开的.因为SVM的核心:高维空间中,在线性可分(如果线性不可分那么就使用核函数转换为更高维从而变的线性可分)的数据集中寻找一个最优的超平面将数据集分隔开来. 所以要理解SVM ...