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. 准备 Python3 和 Python 虚拟环境

    1.安装依赖包 yum -y install wget gcc epel-release git 2.安装 Python3.6 yum -y install python36 python36-dev ...

  2. Linux 查看CPU、内存、机器型号等硬件信息

    # 查看CPU信息 #查看CPU信息(型号) [root@localhost ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 32 ...

  3. 1213 - Fantasy of a Summation

    1213 - Fantasy of a Summation         If you think codes, eat codes then sometimes you may get stres ...

  4. 学习shiro最佳实践,绝对正确

    按照https://blog.csdn.net/qq_34021712/column/info/26947学习,基本能解决shiro一切问题,谢谢该博主

  5. springmvc maven idea 多模块开发(四):建立Web子模块

    先建立web的父模块,其他子web模块建立在该父模块之下,该模块打包方式选择为pom 建立实际web模块,右键点击web-parent,建立方法同上,打包方式为war 建立好后的目录结构如下: 手工建 ...

  6. 珠峰-6-koa-express

    ####  这里写await和return 的区别是, await后边还可以写代码,而return 不会. ##### koa这里需要注意 这样子方法1比起方法2,少写n个url类似这样的key.

  7. Python股票量化第一步环境搭建

    很久之前就希望可以量化分析股票,那么国内的股票数据API也有个,最有名的就是tushare,然后还有baostock. 今天我们就来研究一下这个baostock吧. 首先,我们需要下载一个叫做anac ...

  8. echarts多条折线图

    折线图单只比较好配置,但是多只的话,楼主整整难了一下午才搞出来,下面分享下啦 var myChart = echarts.init(document.getElementById('series-ch ...

  9. Python——面向对象,类属性,静态方法,类方法

    一.类属性 """类属性(Class attribute) 定义:类对象所拥有的属性,被该类的所有实列对象所共有 类对象和实例对象皆可访问类属性 应用条件:记录的某项数据 ...

  10. PHP将图片base64编码传输

    PHP函数源码 function imgToBase64($img_file) { $img_base64 = ''; if (file_exists($img_file)) { $app_img_f ...