图解tcp/tp读书笔记

##OSI通信协议模型(Open System Interconnection)
由下往上分为:

  1. 物理层
    空明线、平衡电缆、光纤、无线信道等
  2. 数据链路层
    DLC Data Link Control Layer
    数据通道,物理层要为终端设备间的数据通信提供传输媒体及其链接。
    媒体是长期的,连接是有生存期的。在连接生存期内,收发两端可以进行不等的一次或多次数据通信。每次通信都要经过建立通信联络和拆除通信联络两个过程。这种建立起来的数据收发关系就叫做数据联络。
  3. 网络层
    提供跨越多个网络的选路功能,为端点提供无连接的数据报访问,并定义端到端的通过整个互联网网络的寻址功能。
    当终端增多时,它们之间有中继设备相连,此时会出现一台终端要求不是与唯一的一台而是能和多台终端通信的情况。这就产生了把任意两台数据终端设备的数据链接起来的问题,这就是路由或者叫寻径。
    当一条物理通信简历之后,被一对用户使用,往往有许多空闲时间被浪费掉,人们自然会希望让多对用户公用一条链路。为解决这一问题就出现了逻辑信道技术和虚拟电路技术。
  4. 传输层
  5. 会话层
  6. 表示层
  7. 应用层

IOS模型中每一层只和紧邻的上下两层通信。高层协议品案终于处理用户服务和各种请求,底层协议偏重于处理实际的信息传输。
分层的目的在于把各种特定的功能分离开来,各个层次相对独立。

IP -> 网络层
TCP -> 传输层
HTTP FTP TELNET -> 应用层

socket是对TCP/IP协议的封装和应用
TCP/IP协议是传输层协议,主要解决数据如何在网络中传输
HTTP应用层协议,解决包装数据

在传输数据时,如果只使用TCP/IP协议,没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议。

WEB使用HTTP作为应用层协议,以分装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上


##Socket
Socket是对TCP/IP协议的封装,Socket本身不是协议,而是一个调用接口(API),只是使得程序员更方便的使用TCP/IP协议层而已,从而形成了我们知道的一些最基本的函数接口,如果create,listen,connect,accept,send,read,write

HTTP就是教程,提供了封装或者显示数据的具体形式,socket是发动机,提供了万罗通信的能力

传输层的TCP是基于网络层的IP协议,而应用层的HTTP协议是基于TCP协议的,socket本身不是协议,只是提供了一个针对TCP或UDP编程的接口

套接字是一个通信链的句柄,用于描述ip地址和端口。
应用程序通过套接字想网络发出链接请求或者应答网络请求


##TCP三次握手

  1. 第一次握手 客户端发送syn包到服务器,并进入SYN_SEND状态,等待服务器确认
  2. 第二次握手 服务器收到syn包,必须确认客户的syn,同事自己也发送一个syn包,即syn+ack包,同事服务器进入syn_recv状态
  3. 第三次握手 客户端收到服务器的syn+ack包,向服务器发送确认包ack,此包发送完毕,服务器和客户端进入established状态,完成三次握手

握手过程中的包不包含数据,三次握手完毕后,客户端和服务器才开始传输数据

理想状态下,TCP链接一旦建立,在通信双方中的任何一方主动关闭链接之前,TCP链接都将一直保持下去。

断开链接时服务器和客户端可以主动发起断开tcp链接的请求,断开过程就需要进过 四次握手,就是服务器和客户端交互,确定断开


##TCP和UDP的区别

  1. TCP是面向链接的,虽然网络的不安全性决定了多少次握手都不能保证链接的可靠性,但TCP的三次握手在最低限度上保证了链接的可靠性。
  2. UDP不是面向链接的,UDP传送数据前并不与对方建立链接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不容重发所以说UDP是无链接,不可靠的的数据传输协议
  3. UDP的开销更小,传输速率更高,因为不用进行收发数据的确认,所以UDP得实时性更好

##Ping

ping原理就是想主机发送udp数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。
udp是非连接的协议,传输数据之前,源端和终端部不建立连接


##中介

  1. 代理 proxy 更具url的绝对格式来接受请求,重写全部或部分消息,通过url的表示把已格式化过的请求发送到服务器
  2. 网关 gateway 接受代理,作为一些其他服务器的上层,并且如果必须的话,可以把请求翻译给下层的服务器协议
  3. 通道tunnel 作为不改变消息的两个链接之间的中继点,当通讯需要一个中介或者中介不能识别消息的内容时,通道通常被使用。

##Socket简历网络链接

建立socket链接至少需要一对套接字,其中一个运行与客户端,成为clientsocket,另一个运行与服务器端,成为serversocket

套接字链接的过程分为3个步骤

  1. 服务器监听 : 服务器套接字并不确定具体的客户端套接字,而是出于等待链接的状态,实时监控网络状态,等待客户端的链接请求
  2. 客户端请求 : 客户端的套接字提出链接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要链接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就像服务器端套接字提出链接请求。
  3. 链接确认 : 当服务器端套接字监听到或者说接收到客户端套接字的链接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了次链接,双方就正式建立链接,而服务器端套接字继续处于监听状态,继续接收其它客户端套接字的链接请求。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值