În kernel, pentru a realiza sockeți pentru diverse protocoale:
folosim o structură generică și schimbăm pointeri la funcții
implementăm funcții și tipuri de date pentru fiecare protocl în parte
în kernel nu există distincție între protocoale
folosim clase generice și moștenire
[1]
(1)
O reprezentare în kernel a unui socket BSD este dată de
struct_sk_buff
}
struct_sock
}
struct_socket
}
struct_file
}
[3]
(1)
În cazul creării unui socket în user-space, în kernel se va executa la un moment dat funcția
sock_create_kern
}
sock_create
}
sk_create
}
sk_create_kern
}
[2]
(1)
Informații despre starea unei conexiuni sunt menținute în
struct_socket
}
struct_sock
}
struct_sockaddr_in
}
struct_sk_connection
}
[2]
(1)
Înainte de trimiterea unui număr trebuie folosită
htonl
}
ntohl
}
sendmsg
}
send_int
}
[1]
(1)
Pentru a realiza utilitare precum
iptables
} trebuie să folosim neapărat
struct_nf_hook_ops
}
struct_module
}
struct_sk_buff
}
struct_socket
}
[1]
(1)
Modelul de dezvoltare Windows pentru rețea este de tipul
peer to peer
client - provider
client - server
monolitic
[2]
(1)
Echivalența corectă Linux-Windows este
struct_sock
} -
ipheader
}
packetfilterextensionptr
} -
nf_hook_fn
}
nf_hook_ops
} -
iobuilddevicecontrolrequest
}
struct_iphdr
} -
ipheader
}
[4]
(1)
Structura
struct_udphdr
} conține informații despre porturi. Structuri
struct_iphdr
} conține informații despre adresa MAC
adevărat, adevărat
fals, adevărat
adevărat, fals
fals, fals
[3]
(1)
Nu este corect apelul
sock_create_kern_pf_inet_sock_dgram_ipproto_udp_sock
}
sock_create_kern_pf_inet_sock_stream_ipproto_tcp_sock
}
sock_ops-_release_sock
}
sock_init_data_sock_sk_str
}
[4]
(1)