Visit Our UNIX and Linux User Community


Endian issues in TCP/IP


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Endian issues in TCP/IP
# 1  
Old 03-01-2002
Data Endian issues in TCP/IP

Hello,
Can anybody tell me whether the little endian-big endian issues will affect porting from True64 to HP UNIX or TCP/IP will take care of that? If it affects what can be the solution.
Thank you,
# 2  
Old 03-01-2002
Your question is very confusing. I don't know if you are trying to port software or write a TCP/IP program.

Endian-ness is decided by the hardware not the the software. If an OS wants to use integer arithmetic, it must go along with what the hardware designers did. A very few cpu's are, um, bi-endian, but most have a preference.

HP hardware is big-endian.

TCP/IP does not even assume that computers have 8 bit bytes, which is why it calls 8 bits an "octet". 32 bit and 16 bit quantities travel over the network in big endian form. But portable programs access them via macros defined in the include file arpa/inet.h. The macros are ntohl, ntohs, htonl, htons. They stand for stuff like "network to host short". With big endian computers, these macros are null. But you should still use them. That way your code works on other computers. Only the macros need to be rewritten.
# 3  
Old 03-02-2002
Thanks a Lot for the reply.
More clarifications from my side are as follows.
1)We are trying to port a fully developed software which does communication from external world via TCP/IP and X.25 protocols.The original code is on COmpaq(little-endian) and it is to be ported on HPUX(big endian).
2)When same code is running on both HP and COmpaq platform,will the macros __BIG_ENDIAN__ and __LITTLE_ENDIAN__ in file /usr/include/netinet/in.h be defined automatically or we have to define on compliation.
# 4  
Old 03-03-2002
I have never heard of any macros like that and I don't see them in HP's include file.

Big Endian and Little Endian are two ways to distribute the 4 bytes of a 32 bit integer. At least one other scheme is in use. If big endian is 4321 and little endian is 1234, then the other scheme is 2143. It arose when a 16 bit big endian cpu with a 16 bit adder implemented 32 bit arithmetic in two stages. It needed to add the low order words first to get the carry for the second addition stage. And these are just the three schemes that I know exist. There are 21 other ways to distribute 4 bytes of a 32 bit integer. And even that assumes that we can all stay in agreement that the bytes themselves are big endian.

The macros that I mentioned will handle all of the possibilities. If you use them you should never have to worry about or even know the structure of a word on your computer.

Previous Thread | Next Thread
Test Your Knowledge in Computers #919
Difficulty: Medium
The Unix epoch is the time 00:00:00 EST on 1 January 1970.
True or False?

9 More Discussions You Might Find Interesting

1. UNIX and Linux Applications

Endian vs pfsense??

Hi Endian firewall free version if we do compare pfsense For a LAN network with active user 1000 Which do you recommend Share (0 Replies)
Discussion started by: mnnn
0 Replies

2. Solaris

Too much TCP retransmitted and TCP duplicate on server Oracle Solaris 10

I have problem with oracle solaris 10 running on oracle sparc T4-2 server. Os information: 5.10 Generic_150400-03 sun4v sparc sun4v Output from tcpstat.d script TCP bytes: out outRetrans in inDup inUnorder 6833763 7300 98884 0... (2 Replies)
Discussion started by: insatiable1610
2 Replies

3. BSD

FreeBSD AMD NFS over TCP issues

Hi! I have a major issue with FreeBSD 7.1 i386. We did a change in our Unix env where we exchanged home storage from a NetAPP running udp to a NetAPP running tcp. Now I cant mount homedirs since NFS/AMD seem to fallback to udp :( Trying to force it with amd options nfs_proto=tcp and so on. ... (0 Replies)
Discussion started by: Esaia
0 Replies

4. Solaris

question about the little-endian in sparc

hi folks, in the sparc v9 manul , it says it is possible to access the memory data in little-endian mode, but there is only privilaged instruction that could set the PSTATE ( the cle bit ) regist. if I'm in the user mode , is it possible for me to access the data in little-endian mode? (10 Replies)
Discussion started by: zerocool_08
10 Replies

5. UNIX and Linux Applications

Migrating Oracle from Big Endian to Little Endian Platorm

Hi, We are trying to migrate an oracle database from Sun Solaris (SunOS 5.9 Generic_118558-28 sun4u sparc SUNW,Ultra-60) to Linux 2.6.18-53.1.19.el5 #1 SMP Tue Apr 22 03:01:10 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux which is basically a Big Endian to Little Endian conversion. We shutdown... (3 Replies)
Discussion started by: luft
3 Replies

6. UNIX for Dummies Questions & Answers

Little Endiean and Big Endian

Dear Friends, I have one question in my mind. That question is "how to detect whether the system is little endiean or big endian" Processing the bit position is the difference between this endians. But I could not understand how to find the pariticular sytem works... (3 Replies)
Discussion started by: Nirmal Babu
3 Replies

7. UNIX for Advanced & Expert Users

Endian Conversion

Hi everybody, I met this week a problem. For now, we used TRU64 system based on alpha. Now, we're installing UP-UX systems (on Itanium). And we have problem with our files. Indeed, we use file with COMP-3, COMP-5 data. These files are used on both platforms. (we use also TXT files which... (1 Reply)
Discussion started by: bigmike59270
1 Replies

8. Programming

Big and Little Endian

We are developing an application using TLI for network communication.The Server Code is developed in Sun and client in SCO unix. When we route data from Client to Server we encrypt the data using DES algotithm utility.The problem we are facing that Sun uses Big Endian methodology to store data in... (1 Reply)
Discussion started by: S.P.Prasad
1 Replies

9. UNIX for Advanced & Expert Users

AIX endian again

Hi all I know AIX is big-endian machine.But does it read bytes in normal way from LSB. Does it happen in some machine that at multi-byte integer level it is Little-endian and while reading a single byte it is Big-Endian. This is urgent Thanks in advance. (3 Replies)
Discussion started by: Shobhit
3 Replies

Featured Tech Videos