|
|
小弟正在学linux下的网络编程,读了不少代码,发现越来越困惑,想在这里问一下好少走些弯路(就连问题都问得很困惑,不知道怎么问):
信息收发函数很多,比如send() sendto(),recv() recvfrom(),分别用于面向连接/非面向连接的程序。
但是这些函数到底传送了什么东西?从7层模型的角度说,不外乎各种协议的数据包,其结构应该是"包头+数据"。
而在读一个chat程序时,使用SOCK_STREAM创建套接字,send和recv的就是普通的字符串,没看见有什么去除包头的动作。
在一个Myping程序中,创建了原始套接字,用sendto发送的是自己构建的icmp包,用recvfrom收到的buf好像是个ip包,需要先去ip头,再去icmp头才是数据。
我不明白了,这些函数传送的信息的内容格式由谁决定??????????? |
|