码迷,mamicode.com
首页 > 其他好文 > 详细

网络协议

时间:2015-06-23 23:19:06      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:网络协议

一:网络分层

  为什么要对网络进行分层?

  双方通信时共同遵循规范,由于这个过程非常复杂,所以对各个部分进行分层. 各分层有对应的协议,各司其职. 本层的改变不影响全局的改变.每一个层次只需利用提供的接口向上输出.

  技术分享

网络层: IPV4 , IPV6 

传输层: TCP/UDP  传输控制, 提供16为的端口号.


二: 传输层

  1)端口号

  纵所周知,服务器端的端口号往往是被动打开,也被称为监听端,服务器端.

端口号(0-1023)  任何其他进程不能使用,永久分配给某应用程序使用. 是有INAN分配. 

从1024-41951 叫注册端口. 非常流行的服务会占用某个服务端口.如mysql 默认占用的是3306端口.

从41952-  临时使用动态端口,或者私有端口.这个端口范围是可以通过调节内核参数 来实现.

   

cat /proc/sys/net/ipv4/ip_local_port_range:
32768   61000
此处有两个端口,表示可以作为临时端口的起始数字和结束数字.对于遇到大量的需要占用临时接口的应用程序需要调整此接口.

  2)TCP :传输控制协议

目前互联网95%都是tcp传输控制协议   ;  sctp为tcp的升级版.

TCP的层次功能.
  1)连接的建立:
  2)数据打包成段:  IP 打包成段最大的数据报文是65535   ,  老的路由器器只有1550以下.
  3)校验和: 检查数据报文发送过程中是否出现了错误.
  4)确认:   报文确认.
  5)超时机制:
  6)排序机制:  为了接收方可以确认和连接数据.
  7)流量控制:  要有一个缓冲区发送缓存和接受缓存. 滑动窗口算法,
  8)拥塞算法:  慢启动,从少到多进行发送.

 3)TCP 的有限状态机

技术分享

三次握手,四次断开.

技术分享


第一次握手:建立连接时,主机A发送SYN包(syn=m)到服务器,并进入SYN_SEND状态,等待主机B确认
第二次握手:主机B收到SYN包,必须确认主机A的SYN(ACK=m+1),同时自己也发送一个SYN包(SYN=n),即SYN+ACK包,此时主机B进入SYN_RECV状态
第三次握手:主机A收到主机B的SYN+ACK包,向主机B发送确认包ACK(ACK=n+1),此包发送完毕,主机A和主机B进入ESTABLISHED状态,完成三次握手


当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
由主机B端再提出反方向的关闭请求,将FIN置1
主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束


三:套接字

  套接字从本质上讲是一个设备.   ip+端口   绑定在某个服务上.

四:socket

  主要用于不同主机间的进程间通信.

   

domain(识别sockt的方法)
    unix domain  同一主机不同进程间同信一种方式.
    IPV4 domain  借助IPV4 实现不同主机间进程通信.
    IPV6 domain


两台主机通信过程.

 进程注册套接字

 发送端主机内核-->发送缓冲区-->接收缓冲区-->接收端主机内核.

 接收到内容要进行IO操作, 往往IO操作比较慢,需要缓冲区.




本文出自 “slayer” 博客,请务必保留此出处http://slayer.blog.51cto.com/4845839/1664761

网络协议

标签:网络协议

原文地址:http://slayer.blog.51cto.com/4845839/1664761

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!