Linux网络TCP/IP开发

网络OSI(7层协议):
物理层
数据链路层:单个链路上如何传输数据。这些协议与被讨论的各种介质有关。
网络层
传输层:TCP / UDP
会话层
表示层
应用层:FTP HTTP

TCP的三次握手(SYN:同步序列编号(Synchronize Sequence Numbers),ACK:确认字符(Acknowledgement)。
第一次握手:客户端发送SYN包给服务器,进入SYN_SENT状态,等待服务器回复。
第二次握手:服务器收到客户端的SYN包后,组合ACK包(ACK=客户端SYN+1),然后服务器将自己的SYN号+ACK包一起发给客户端,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的SYN+ACK包后,向服务器发送ACK包(服务器SYN+1)。发送后,服务器与客户端进入链接状态。

总结:1.客户端发SYN给服务器。
      2.服务器发客户端SYN+1和服务器SYN。
      3.客户端发服务器SYN+1给服务器

Socket:
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,相当于库的形式提供给开发人员。
Socket其实就是将复杂的TCP/IP协议族隐藏在Socket接口后面,开发人员只需要使用简单的接口,其余的让Socket去组织数据,以符合指定的协议。
目前大多数平台的tcp和udp的应用开发均基于socket接口实现。

tcp协议和udp协议的差别 
             TCP               UDP 
是否连接     面向连接   面向非连接 
传输可靠性     可靠      不可靠 
应用场合    传输大量数据  少量数据 
速度          慢          快

创建udp和tcp:
int sock_udp = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
int sock_tcp = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值