基础知识——TCP协议
七层网络模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。
五层网络模型:
1. 应用层:确定进程之间通信的性质以满足用户需求。(各种传输协议)
2. 运输层:负责主机间不同进程的通信。(TCP/UDP)
3. 网络层:负责分组交换网中不同主机间的通信。
4. 数据链路层:负责将网络层的IP数据报组装成帧。
5. 物理层:透明地传输比特流。
四层网络模型:(TCP/IP分层模型)
1. 网络接口层:包括用于协作IP数据在已有网络介质上传输的协议。这样的协议提供TCP/IP协议的数据结构和实际物理硬件之间的接口。
2. 网间层:对应七层模型的网络层。本层负责数据的包装、寻址和路由。
3. 传输层:对应七层模型的传输层。本层提供两种端到端的通信服务。TCP提供可靠的数据流运输服务,UDP提供不可靠的用户数据报服务。
4. 应用层:对应七层模型的应用层和表示层。
TCP头部:
16位端口号:告知主机该报文段来自哪里(源端口)以及传给哪个上层协议或应用程序(目的端口)。
32位序号:一次TCP通信过程中某一个传输方向上的字节流的每个字节的编号。(相当于数据在字节流上的字节偏移)
32位确认号:对另一方发送来的TCP报文段的相应。其值是收到的TCP报文段的序号值加1。
4位头部长度:标识该TCP头部有多少个32bit(4Byte)。
6位标志位:URG,ACK,PSH,RST,SYN,FIN
URG表示紧急指针是否有效
ACK表示确认号是否有效
PSH提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间
RST表示要求对方重新建立连接
SYN表示请求建立一个连接
FIN表示通知对方本端要关闭连接
16位窗口大小:告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据。
16位校验:
16位紧急指针:
注意点:
1. TCP包没有IP地址。这是IP层的任务。
2. 一个TCP连接需要4个元组(src_ip, src_port, dst_ip, dst_port)。准确的说是五元组,因为还包括一个协议。
3. 序号用来解决网络包乱序问题。
4. ACK用于确认收到,用来解决不丢包的问题。
5. 窗口,即滑动窗口,用于解决流控问题。
6. TCP Flag包类型,用于操控TCP的状态机。
TCP状态流转:
三次握手:SYN J(SYN_SEND),SYN K ACK J+1(SYN_RECV),ACK K+1(ESTABLISHED)
三次握手主要是初始化双方序号的初始值,作为以后数据通信的序号。
四次挥手:FIN M,ACK M+1 FIN N,ACK N+1
四次挥手是因为TCP传输是全双工的,所以双方都需要发送FIN和ACK。
TCP超时重传:
TCP传输的4种情况:数据顺利到达,顺利相应ACK;数据包中途丢失;数据包顺利到达,ACK中途丢失;数据包顺利到达,对端未响应或被丢弃。
TCP滑动窗口:(待补充)
TCP拥塞控制:(待补充)
基础知识——TCP协议的更多相关文章
- JAVA基础知识|TCP/IP协议
虽然写代码也有一定的年头了,但是对于一些基础概念,还是很模糊.这在后来的学习过程中,带来了很大的痛苦,所以痛定思痛,决心重新学习这些概念.并把自己的理解和查询的资料做一些整合,便于以后查阅! 一.什么 ...
- 网络基础知识-TCP/IP协议各层详解
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- 网络基础知识 tcp
网络基础相关的知识(1)架构a. C / S架构: client客户端和server服务器端 优势: 能充分发挥PC机的性能b. B / S架构: browser浏览器和server服务器 隶属于C ...
- c++ 实时通信系统(基础知识TCP/IP篇)
编写前的基础知识 C/S结构: C/S是Client/Server,即客户端/服务器端架构,一种典型的两层架构.客户端包含一个或多个在用户的电脑上运行的程序服务器端有两种,一种是数据库服务器端,客户端 ...
- 网络基础知识 - HTTP协议
前传:HTTP协议的演变过程 HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是 ...
- 8.6 day27 网络编程 osi七层协议 Time模块补充知识 TCP协议
Time模块补充知识 date和datetime区别是什么? date 就是年月日 datetime就是年月时时分秒 以下代码为什么会报错? import json from datetime imp ...
- JAVA基础知识|HTTP协议-发展历程
HTTP 是基于 TCP/IP 协议的应用层协议.它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口. 此文章为转载内容:http://www.ruanyif ...
- JAVA基础知识|HTTP协议-两个特性
一.无连接 无连接:服务器与浏览器之间的一次连接只处理一个http请求,请求处理结束后,连接断开.下一次请求再重新建立连接. 然而随着互联网的发展,一台服务器同一时间处理的请求越来越多,如果依然采用原 ...
- 第二章 TCP/IP 基础知识
第二章 TCP/IP 基础知识 TCP/IP transmission control protocol and ip internet protocol 是互联网众多通信协议中最为著名的. ...
随机推荐
- js实现页面消息滚动效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- win8.1默认输入法设置
1.右击左下角,选择控制面板 2.选择更改输入法 3.选择高级设置 4.在替代默认输入法,从下拉列表中选择自己已安装的输入法,比如搜狗拼音输入法,qq拼音输入法等其他输入法
- idea或者java远程提交spark任务到yarn,Exception1
spark通過idea远程提交job到yarn: Caused by: java.lang.ClassCastException: cannot assign instance of scala.co ...
- CountDownLatch/CyclicBarrier/Semaphore 使用过吗
CountDownLatch 让一些线程堵塞直到另一个线程完成一系列操作后才被唤醒.CountDownLatch 主要有两个方法,当一个或多个线程调用 await 方法时,调用线程会被堵塞,其他线程调 ...
- 用python做youtube自动化下载器 代码
目录 项目地址 思路 流程 1. post i. 先把post中的headers格式化 ii.然后把参数也格式化 iii. 最后再执行requests库的post请求 iv. 封装成一个函数 2. 调 ...
- Supervisord进程管家
Supervisord进程管家 Supervisord是一个守护进程的工具,当进程意外终止或服务器掉电起来后,希望进程能够自动运行,supervisord可以很好的为我们做这件事情.同时supervi ...
- Azure Terraform(四)状态文件存储
一,引言 我们都知道在执行部署计划之后,当前目录中就产生了名叫 "" 的 Terraform 的状态文件,该文件中记录了已部署资源的状态.默认情况下,在执行部署计划后,Terraf ...
- 【RAC】通过命令查看当前数据库是不是rac
SQL> show parameter cluster_database 如果参数中显示的是 NAME TYPE ...
- 什么是xss攻击
概述: XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器 执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列 表,然后向联 ...
- oracle字符集与乱码(转)
作者:hcling97 http://blog.sina.com.cn/hcling97 2013年5月15日 转载请注明出处 字符集问题一直叫人头疼,究其原因还是不能完全明白其运作原理. 在整 ...