Как протокол IP использует псевдозаголовок из UDP и TCP
От: Booch  
Дата: 27.03.03 21:39
Оценка:
Привет всем!
Сможет кто-нибудь разъяснить или подсказать каким образом протокол IP использует псевдозаголовок из UDP или TCP. использует эти данные в построении своего заголовка или нет. И что делатся с ним при приеме пакета, формируется ли псевдозаголовок из заголовка IP, и как он учитывается в подсчете контрольной суммы. а то глядя в исходники и стандарт наблюдаю некоторые разночтения. Может подскажет кто, какой на самом деле используется псевдозаголок.
Спасибо
Re: Как протокол IP использует псевдозаголовок из UDP и TCP
От: Linuxoid  
Дата: 28.03.03 09:50
Оценка:
Здравствуйте, Booch, Вы писали:

B>Привет всем!

B>Сможет кто-нибудь разъяснить или подсказать каким образом протокол IP использует псевдозаголовок из UDP или TCP. использует эти данные в построении своего заголовка или нет. И что делатся с ним при приеме пакета, формируется ли псевдозаголовок из заголовка IP, и как он учитывается в подсчете контрольной суммы. а то глядя в исходники и стандарт наблюдаю некоторые разночтения. Может подскажет кто, какой на самом деле используется псевдозаголок.
B>Спасибо

Псевдозаголовок используется при расчете контрольной суммы TCP и включает в себя выборочные данные из IP-заголовка. Формат псевдо-заголовка (RFC 793):

— Source IP-address;
— Destination IP-address;
— Protocol;
— Size;

Размер псевдо-заголовка 12 байт.
Re[2]: Как протокол IP использует псевдозаголовок из UDP и T
От: Linuxoid  
Дата: 28.03.03 11:13
Оценка: 26 (1)
Здравствуйте, Linuxoid, Вы писали:

L>Здравствуйте, Booch, Вы писали:


L>Псевдозаголовок используется при расчете контрольной суммы TCP и включает в себя выборочные данные из IP-заголовка. Формат псевдо-заголовка (RFC 793):


L>- Source IP-address;

L>- Destination IP-address;
L>- Protocol;
L>- Size;

L>Размер псевдо-заголовка 12 байт.


Вот мой код для расчета TCP-чексумы (без тела TCP):


        // Initialize locals
        tcp_packet = (unsigned short*)(ip_datagram + ip_head_len);
        size = ip_datagram_len - ip_head_len;
        csum = 0;

        // Psevdo-header
        csum += *((unsigned short*)(ip_datagram+12));   // Source IP
        csum += *((unsigned short*)(ip_datagram+14));
        csum += *((unsigned short*)(ip_datagram+16));   // Destination IP
        csum += *((unsigned short*)(ip_datagram+18));
        csum += htons((unsigned short)ip_datagram[9]);  // Protocol
        csum += htons(size);
        
        // TCP body
        (skipped)
Re[2]: Как протокол IP использует псевдозаголовок из UDP и T
От: Аноним  
Дата: 04.04.03 08:13
Оценка:
Здравствуйте, Linuxoi
Я правильно понимаю, что псевдозаголовок не учавствует в передаче данных, а только для расчета контрольной суммы?
Re[3]: Как протокол IP использует псевдозаголовок из UDP и T
От: Linuxoid  
Дата: 05.04.03 19:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Linuxoi

А>Я правильно понимаю, что псевдозаголовок не учавствует в передаче данных, а только для расчета контрольной суммы?

Да, правильно. Потому он и называется псевдозаголовок, что в пакете реально не существует.
Re[4]: Спасибо(-)
От: Аноним  
Дата: 07.04.03 07:39
Оценка:
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.