TCP/IP

OSI的“实现”:TCP/IP

OSI七层模型

TCP/IP概念层模型

功能

TCP/IP协议族

应用层

应用层

文件传输、电子邮件、文件服务、虚拟终端

FTP,HTTP,SMTP,SNMP,Telnet

表示层

数据格式化、代码转换、数据加密

会话层

解除或建立与别的接点的连接

传输层

传输层

提供端对端的接口

TCP,UDP

网络层

网络层

为数据包选择路由

IP,ICMP,RIP,OSPF,IGMP

数据链路层

链路层

传输哟偶地址的帧以及错误检测功能

SLIP,CSLIP,PPP,ARP,RARP

物理层

以二进制数据形式在物理媒体上传输数据

ISO2110,IEEE802,IEEE802.2

常用的TCP端口号有:HTTP 80,FTP 20/21,Telnet 23,SMTP 25,DNS 53等;常用的保留UDP端口号有:DNS 53,BootP 67(server)/ 68(client),TFTP 69,SNMP 161等。

TCP的三次握手

TCP Flags

URG:紧急指针标志

ACK:确认序号标志

PSH:push标志

RST:重置连接标志

SYN:同步序号,用于建立连接过程

FIN:finish标志,用于释放连接(1:发送方已无数据发送)

“握手”是为了建立连接,TCP三次握手的流程图如下:

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用3次握手建立一个连接。(sequence number 即上图中x ,y值)

1、第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。

2、第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。

3、第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTAB_LISHED状态,完成三次握手。

谈谈TCP的四次挥手

挥手是为了终止连接,TCP四次挥手的流程图如下:

TCP采用四次挥手来释放连接

1、第一次挥手:client 发送一个FIN,用来关闭client到server的数据传送,client进入FIN_WAIT_1状态。

2、第二次挥手:server收到FIN后,发送一个ACK给client,确认序号为收到的序号加1(与SYN相同,一个FIN占用一个序号),server进入CLOSE_WAIT状态。

3、第三次挥手:server发送一个FIN,用来关闭server到client的数据传送,server进入LAST_ACK状态。

4、第四次挥手:client收到FIN后,client进入TIME_WAIT状态,接着发送一个ACK给server,确认序号为收到的序号+1,server进入CLOSED状态,完成四次挥手。(client在2MSL时间之后也会关闭)

TCP连接必须经过2MSL后才真正的释放?

确认有足够的时间让对方收到ACK包

避免新旧连接混淆

UDP简介

UDP特点

1、面向非连接

2、不维护连接状态,支持同时向多个客户端传输相同的消息

3、数据包报头只有8个字节,额外开销较小

4、吞吐量只受限于数据生成速率、传输速率以及机器性能

5、尽最大努力交付,不保证可靠交付,不需要维持复杂的链接状态表

6、面向报文,不对应用程序提交的报文信息进行拆分或者合并

结论

      TCP             UDP

1、面向连接    vs    无连接

2、可靠性     vs     无

3、有序性     vs     无

4、速速慢      vs     快(适用于在线媒体  广播等)

5、量级(20个字节)     vs     8个字节

TCP的滑动窗口

RTT和RTO

RTT:发送一个数据包到收到对应的ACK,所花费的时间

RTO:重传时间间隔(客户端发送一个ack时默认启动一个定时器,服务器在一定的时间没有返回相应的包时启动定时器从新发送一个)(经过RTT计算出RTO)

HTTP简介

超文本传输协议HTTP主要的特点

1、支持客户/服务器模式

2、简单快速

3、灵活(传输任意类型数据)

4、无连接(每次连接限制一个请求,服务器处理完客户请求并收到客户应答之后即断开,节省传输时间。http1.1默认使用长连接服务器默认等待一定时间后才断开连接,以保证连接特性)

5、无状态(协议对事物的处理没有状态)

请求/响应的步骤

1、客户端连接到Web服务器

2、发送HTTP请求

3、服务器接收到请求并返回HTTP响应

4、释放连接TCP连接

5、客户端浏览器解析HTML内容

在浏览器输入URL按下回车经历的流程

1、DNS解析

2、TCP连接(找到IP地址和端口后和服务器建立TCP连接)

3、发送HTTP请求

4、服务器处理请求并返回HTTP报文

5、浏览器解析渲染页面

6、连接结束

HTTP状态码

五种可能的取值

1、1××:只是信息—表示请求已接收,继续处理

2、2××:成功—表示请求已被成功接收、理解、接受

3、3××:重定向—要完成请求必须进行更进一步的操作

4、4××:客户端错误—请求语法错误或请求无法实现

5、5××:服务器端错误—服务器未能实现合法的请求

常见的状态码

1、200:正常返回信息 – 成功

2、400(bad request):客户端请求语法错误,不能被服务器所理解

3、401(unauthorized):请求未经授权,这个状态代码必须和www-authorized报头域一起使用

4、403(forbidden):服务器收到请求但是拒绝提供服务

5、404(not found):请求资源不存在

6、500(internal server error):服务器发生不可预期的错误

7、503(server unavailable):服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

POST请求和GET请求

三个层面来解答

1、HTTP报文层面:GET将请求信息放在URL,POST放在报文体中

2、数据库层面:GET符合幂等性(对数据库的一次操作和多次操作是一致的)和安全性,POST不符合

3、其他层面:GET可以被缓存、被存储,POST不行

Cookie和Session的区别

Cookie的简介

1、是由服务器发送给客户端的特殊信息,以文本的形式存放在客户端

2、客户端再次请求的时候,会把cookie回发

3、服务器收到后,会解析cookie生成与客户端相对应的内容

Cookie的设置以及发送过程

Session的简介

1、服务器的机制,在服务器上保存的信息

2、解析客户请求并操作session id ,按需保存状态信息

Session的实现方式

使用cookie来实现

Cookie和Session的区别

1、cookie数据存放在客户的浏览器上,session数据存放在服务器上

2、session相对于cookie更安全

3、考虑到减轻服务器的负担,应当使用cookie

HTTP和HTTPS的区别

1、HTTPS需要到CA申请证书,HTTP不需要

2、HTTPS密文传输,HTTP明文传输

3、连接方式不同,HTTPS使用443端口,HTTP使用80端口

4、HTTPS = HTTP + 加密 + 认证 + 完整性保护,较HTTP安全

Socket简介

常用的TCP端口号有:HTTP 80,FTP 20/21,Telnet 23,SMTP 25,DNS 53等;常用的保留UDP端口号有:DNS 53,BootP 67(server)/ 68(client),TFTP 69,SNMP 161等。

网络中的 TCP/IP的更多相关文章

  1. iOS网络协议 HTTP/TCP/IP浅析

    一.TCP/IP协议       话说两台电脑要通讯就必须遵守共同的规则,就好比两个人要沟通就必须使用共同的语言一样.一个只懂英语的人,和一个只懂中文的人由于没有共同的语言(规则)就没办法沟通.两台电 ...

  2. 嵌入式linux的网络编程(1)--TCP/IP协议概述

    嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...

  3. 第12章 网络基础(1)_网络分层和TCP/IP协议族

    1. 协议的概念 (1)计算机网络中实现通信必须有一些约定.如对速率.传输代码.代码结构.传输控制步骤和出错控制等约定,这些约定即被称为通信协议 (2)在两个节点之间要成功地进行通信,两个节点之间必须 ...

  4. 网络编程之TCP/IP各层详解

    网络编程之TCP/IP各层详解 我们将应用层,表示层,会话层并作应用层,从TCP/IP五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议,就理解了整个物联网通信的原理. 首先,用户感知到的只 ...

  5. 网络协议: TCP/IP 和UDP/IP

    网络协议: TCP/IP 和UDP/IP TCP/IP TCP/IP(Transmission Control Protocol/Internet Protocol)是一种可靠的网络数据传输控制协议. ...

  6. TCP/IP概述(网络互联与TCP/IP)

    TCP/IP概述(网络互联与TCP/IP) 用IP实现异构网络互联 从用户角度如何实现异构网络互联: 从用户角度看,实现异构网络互联的关键点就是使各种网络类型之间的差异对自己透明.在TCP/IP协议中 ...

  7. 卫星网络中使用TCP协议的劣势(所以才有TCP优化版用来卫星通信啊,比如TCP-Peach和ADolar)

    卫星网络中使用TCP协议的劣势 为了避免产生网络拥塞,原TCP协议综合采用了慢启动.拥塞避免.快速重传以及快速恢复等算法.但这些算法应用的前提是网络发生拥塞造成丢包,然而在误码率相对较高的卫星通信系统 ...

  8. 【转载】[基础知识]【网络编程】TCP/IP

    转自http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=27043 [基础知识][网络编程]TCP/IP iooops  胖友们楼主我又 ...

  9. 协议分析中的TCP/IP网络协议

    - 链路层 第一层包含源mac及目的mac,随着传输路径的变化会发生变化,在mac之后,是下层网络协议的类型,图中,下层为IP协议. 在协议解析中,需要关注的是图中type这个字段的内容. - 网络层 ...

随机推荐

  1. Shell脚本 小程序演示

    一般的shell编程 场景贯穿了几个熟知的步骤: ●显示消息●获取用户输入●存储值到文件●处理存储的数据 这里写一个小程序 包含以上几部 #!/bin/bash while true do #echo ...

  2. Docker Compose搭建Redis一主二从三哨兵高可用集群

    一.Docker Compose介绍 https://docs.docker.com/compose/ Docker官方的网站是这样介绍Docker Compose的: Compose是用于定义和运行 ...

  3. 《自拍教程24》在Windows上配置环境变量

    我们说的环境变量,一般是指的是Path环境变量. 第一步:点击"我的电脑",右键,"属性" 第二步:点击"高级系统设置",弹出的窗口选&qu ...

  4. WebSocket协议分析

    WebSocket协议分析 1.什么是WebSocket协议 WebScoket协议是基于TCP协议建立的全双工通信,所谓的全双工通信就是双向同时通信. 2.WebSocket协议优点 WebSock ...

  5. Centos7.5中Nginx报错:nginx: [error] invalid PID number "" in "/run/nginx.pid" 解决方法

    服务器重启之后,执行 nginx -t 是OK的,然而在执行 nginx -s reload 的时候报错 nginx: [error] invalid PID number "" ...

  6. SQLPLUS ed无法调出编辑面板 SP2-0107:无须保存

    现象: 重新启动oracle启动sqlplus,首先执行ed命令时出错,没有调出编辑命令的文件: SQL> edSP2-0107: 无须保存. 分析:出错的原因可能是临时编辑文件中没有需要执行的 ...

  7. C语言switch中case后跟随break语句

    1.case后面的常量表达式实际上只起语句标号作用,而不起条件判断作用,即“只是开始执行处的入口标号”.因此,一旦与switch后面圆括号中表达式的值匹配,就从此标号处开始执行:而且执行完一个case ...

  8. springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离

    1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...

  9. ES6 - 基础学习(2): 新的变量声明方式 let 与 const

    ES6)新增加了两个重要的 JavaScript 关键字:let 和 const.以前声明变量时只有一种方式:var,ES6对声明方式进行了扩展,现在可以有三种声明方式了. 1.var:variabl ...

  10. openlayers6实现webgl点图层渲染效果(附源码下载)

    前言:openlayers6推出来的有一段时间,推出来的新特性见:https://github.com/openlayers/openlayers/releases/该版本的主要功能是能够组合具有不同 ...