码迷,mamicode.com
首页 > 系统相关 > 详细

linux 网络相关

时间:2017-08-05 20:36:29      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:lis   重复   服务   icm   rar   时间   协议栈   mtu   字节   

开放互联网参考模型
OSI
应用层
表示层
会话层                    
传输层        乱序重排,重新请求包            
网络层                     
数据链路层      数据帧                    
物理层        比特流   


TCP/IP四层模型
应用层        FTP  HTTP
传输层        TCP  UDP
网络层        IP   ICMP  IGMP
链路层        ARP  RARP

 

封装

                    用户数据    应用层
               APP头部 + 用户数据    应用层
          TCP头部 + APP头部 + 用户数据    传输层
      IP头部 + TCP头部 + APP头部 + 用户数据    网络层
以太网头部 + IP头部 + TCP头部 + APP头部 + 用户数据    链路层

对等通信,协议栈

TCP<---------------->TCP

解封(分用)

从链路层解析头部至对应层

用端口区分是哪个应用程序

 

 

MTU:  最大传输单元

IP层数据大于 MTU 要分片(自动进行)

 

链路层只识别 MAC 地址 即物理地址

IP ---->  MAC   地址解析  ARP

MAC -------->IP  反向地址解析  RARP  (无盘工作站)

 

ping       ip

不是ip地址则转成ip地址(gethostname)

发送 ICMP (ICHO包)

没有MAC地址

广播 ARP 请求

请求的主机保存地址并回应

根据回应发送 ICMP

 

三次握手,四次断开,TCP/IP11种状态

 

TCP

不可靠表现     解决方法

差错      校验和(网际校验和)

丢包      超时重传+确认机制

失序      通过序号保证

重复      通过序号保证

 

UDP

无连接,不可靠,相对高效

 

TCP 发送数据并启动定时器,收到消息校验正确并返回确认,在一定时间内没有确认就进行超时重传

 

滑动窗口协议:(可用于流量控制)

MSS:最大段大小 (IP层分片相关)

 

通告接收窗口(rwnd):    对方缓冲区

拥塞窗口(cwnd):      网络承受能力

发送窗口去上面两个的最小值

慢启动阀值(ssthresh)

慢启动阶段:cwnd从1按指数增加到ssthresh

拥塞避免阶段:cwnd按线性增长至拥塞,cwnd - 1, ssthress减半

 

大端字节序

数据高位保存于内存低地址

小端字节序

数据高位保存于内存高地址

规定大端字节序为网络字节序

 

 

服务器维持两个队列,一个是完成三次握手的队列,一个是正在进行三次握手的队列

 

server init--->bind-->listen-->accept-->close

client init-->connect-->close

服务器要绑定任意地址,设置绑定地址重复利用

使用信号处理僵尸进程,用信号处理管道破裂问题

 

kill -l

ps -au user

netstat -an | grep post

 

TCP 基于字节流,无边界,会产生粘包问题

UDP 基于消息传输服务,数据报

应用层向socket缓冲区写入数据,MSS等限制,可能会分片

 

解决方法:

1、定长包

2、特定字符结尾边界(FTP ‘\r\n‘)

3、加包头记录长度

4、其他的应用协议

 

ssize_t: 有符号数

size_t: 无符号数

 

获取地址:IP+端口

gethostname

getpeername

 

linux 网络相关

标签:lis   重复   服务   icm   rar   时间   协议栈   mtu   字节   

原文地址:http://www.cnblogs.com/heidekeyi/p/7291213.html

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