unix网络编程 chapter1 and chapter2

简介

bzero(&p, size);    // 功能等效memset(&p, 0x00, size)
inet_pton(AF_INET, input_str, &servaddr.sin_addr);    // 地址转换,将点分十进制转换为正确格式,支持ipv6
  • TCP本身并不提供记录结束标志,如果应用程序需要确定记录的边界,需要自己实现。

传输层

概述

  • TCP:传输控制协议,是一个复杂的、可靠地字节流协议
  • UDP:用户数据协议,是一个简单的、不可靠的数据报协议
  • SCTP:流控制传输协议, 是一个可靠的传输协议,提供消息边界、传输级别多宿支持、将头端阻塞减少到最小的一种方法
  • BPF:BSD分组过滤器
  • DLPI:数据链路提供者接口
  • IPv4:网际协议版本4,使用32位地址
  • IPv6:网际协议版本6,使用128位地址
  • ICMP:网际控制消息协议
  • IGMP:网际组管理协议,用于多播
  • ARP:地址解析协议,把一个IPv4地址映射成一个硬件地址
  • RARP:反向地址解析协议,把一个硬件地址映射成一个IPv4地址
  • MSL:最长分节生命期,表示IP数据报能够在英特网中存活的最长时间

UDP(RFC 768)

TCP(RFC 793 1323 2581 2988 3390)

SCTP(RFC 2960 3309 3286)

  1. TCP也不能被描述成是100%可靠的协议,它提供的是可靠传递或故障的可靠通知

TCP连接的建立和终止

三路握手

  • 服务器的被动打开:socket、bind、listen
  • 客户端的主动打开:connect,客户TCP发送一个SYN分节,里面包含将要建立的连接中的数据的初始序列号
  • 服务器在单个分节中发送SYN和对客户SYN的ACK
  • 客户必须确认服务器的SYN

连接终止

  • 应用进程主动关闭:close,发送一个FIN分节,表示数据发送完毕
  • 对端被动关闭:接收到FIN分节,由TCP确认
  • 接收到FIN分节的进程调用close关闭套接字,发送一个FIN分节
  • 原发送端确认这个FIN分节
    异常终止套接字也将发送一个FIN分节
    TIME_WAIT状态的持续时间为2MSL

SCTP关联的建立和终止

四路握手

  • 服务器的被动打开:socket、bind、listen
  • 客户端的主动打开:connect或者发送消息进行主动打开,客户SCTP发送一个INIT消息,包含客户的信息
  • 服务器回复INIT ACK消息确认,包含服务器的信息和一个状态cookie
  • 客户回复一个COOKIE ECHO消息回射服务器的状态cookie
  • 服务器以一个COOKIE ACK消息确认客户端

端口号

  IANA众所周知端口             IANA注册的端口            IANA动态或私用端口

|<-------------------------->|     |<----------------------------->|         |<-------------------->|
1         1023   1024         49151      49152     65536

套接字对

(TCP) 是一个定义该连接的两个端点的四元组:本地IP、本地TCP端口号、外地IP、外地TCP端口号
(SCTP) 是一个定义该关联的两个端点的四元组:一组本地IP、一个本地TCP端口号、一组外地IP、一个外地TCP端口号

缓冲区大小和限制

  • IPv4数据报的最大大小为65536字节,因为长度字段占据16位
  • IPv6数据报的最大大小为65575字节,增加了40字节的IPv6首部
  • MTU:最大传输单元
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值