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. Java也疯狂-分享利用ffmpeg做视频转换的工具

    朋友需要经常将视频统一转换为mp4格式,市面上的工具很多,但是转换的体积.自动化程度等都不好,于是花了一个小时给朋友写了个给予ffmpeg的批量转换工具,功能简单但是很实用,也正好给学习Java的同学 ...

  2. iptables之路由网关共享上网/端口映射

    linux-A 主机配置eth0即可: [root@linux-A ~]# ifconfig eth0|sed -n '2p' inet addr:192.168.20.3 Bcast:192.168 ...

  3. css实现文字过长显示省略号的方法

    <div class="title">当对象内文本溢出时显示省略标记</div> 这是一个例子,其实我们只需要显示如下长度: css实现网页中文字过长截取. ...

  4. python爬虫实战:基础爬虫(使用BeautifulSoup4等)

    以前学习写爬虫程序时候,我没有系统地学习爬虫最基本的模块框架,只是实现自己的目标而写出来的,最近学习基础的爬虫,但含有完整的结构,大型爬虫含有的基础模块,此项目也有,“麻雀虽小,五脏俱全”,只是没有考 ...

  5. GNU make doc - 6.6 追加变量值

    有时我们需要对已经定义过的变量进行追加,可以使用+=进行这一操作,就像下面这样 objects += another.o 该语句取objects变量的值,并在其后追加another.o(结果会在原变量 ...

  6. js—DOM详情

    1,什么是DOM,有什么作用 Document Object Model 文档对象模型,是一个html和xml文档的编程接口,可以将文档(html页面)解析成dom树,然后通过提供的dom接口来改变文 ...

  7. 移动app

    什么是移动App开发[重点] 苹果上的软件是如何开发出来的:使用IOS平台的开发工具和开发语言进行设计开发的!苹果上的开发语言:OC.Swift 安卓平台上的软件又是如何开发出来的:使用Java这么语 ...

  8. IDEA 修改编码

    IDEA: 一. 文件编码修改 IntelliJ IDEA可以在菜单中的File -> Settings -> Editor -> File Encoding下修改项目文件的编码 1 ...

  9. C++中static关键字的用法

    运行一个完整的程序.我们可将整个存储区分为四块: (1)栈区:就比如局部变量,对应的函数参数等这些,调用完之后相应的内存会自己释放掉,很让人省心. (2)堆区:堆来堆去的.得要人动手.所以得我们自己手 ...

  10. python基础之字典功能

    python中字典是个很重要的功能,使用键值(key-value)存储,具有极快的查找速度.值得注意的是,字典的key要为不可变对象,比如字符串.字母,但不能是可变的,比如列表等. 1.字典的定义: ...