소켓을 생성할 때는 IP주소, PORT번호를 선언해줘야 한다. 이에 대해 알아보고자 한다.
목차
1. IP 주소
2. PORT 번호
3. 저장 바이트 순서
1. IP 주소
인터넷 상에서 컴퓨터를 구분하기 위한 목적으로 우리 집 주소 같은 개념이다.
IP는 우선, 네트워크 주소와 호스트 주소로 구분되는데 네트워크 주소는 내가 사는 구, 호스트 주소는 내가 사는 상세주소 정도라고 생각하면 된다.
네트워크 주소와 호스트 주소를 나눈 이유는 네트워크 아이디에 따라 호스트 아이디를 효과적으로 분배하기 위함이다.
네트워크 주소는 클래스로 구분되는데 A~E 클래스까지 존재한다.

A의 host address bit 이 가장 큰데, A는 대규모 네트워크, B는 중규포, C는 소규모 네트워크 환경에 사용된다.
2. PORT 번호
IP 주소와 함꼐 많이 사용되는 것이 PORT 번호이다.
PORT 번호는 소켓을 구분 용도로 사용되는데, ip 주소 집주소라면, PORT 번호는 방 번호 같은 개념이다.
따라서 소켓 구조체는 다음과 같이 정해질 수 있고, 주소체계에 따라 사용되는 나머지 비트 수가 가변적으로 변하게 된다.
struct socket
{
sa_familty_t ip_family; //주소체계
uint16_t port; //port 번호 //2byte
strcut addr; //32bit ip 주소 //4byte
char unused; //사용되지 않음 //8byte => ipv4에 맞게 세팅해서 안쓰는거임!!!
}
3. 바이트 순서
소켓을 만들 때 고려해야 될 것이 하나 더 있는데, 바로 네트워크 바이트 순서이다.
빅인디언과 리틀 엔디안 개념이 나오는데,
빅엔디언 상위 바이트의 값을 작은 주소에 저장하고,
리틀엔디언은 상위 바이트의 갑을 큰 주소에 저장한다.

네트워크는 빅엔디안 기준으로 전송이 된다. 소켓이 리틀엔디안이라면, 소켓 생성 시에만 리틀엔디안을 빅엔디안으로 변환해주면 되고, 그 이후 부터는 소켓이 알아서 처리해준다.
'ComputerScience > Network' 카테고리의 다른 글
| 개요 (0) | 2020.08.28 |
|---|