1. IPv4와 IPv6의 차이점
IPv4
는 4바이트 주소 체계이고 IPv6
는 16바이트 주소 체계이다. IPv4로 표현할 수 있는 IP주소의 수는 약 43억 개인데, 이것이 고갈되기 시작하면서 IPv6이 등장하였다.
2. IPv4의 네트워크 부/호스트 부
IPv4 기준으로 IP주소는 네트워크 부
와 호스트 부
로 이루어져 있다. IP주소의 형태에 따라서 A,B,C,D,E 클래스로 분류되는데, 클래스 A,B,C의 특징은 문제 4의 <표>와 같고, 클래스 D는 멀티캐스트 IP주소이며, 클래스 E는 예약되어 있는 주소체계이다. 개인 컴퓨터로 전송된 데이터는 먼저 네트워크 주소를 보고 그 컴퓨터가 속한 네트워크로 전달된다. 해당 네트워크를 구성하는 라우터는 호스트 주소를 보고 전달받은 데이터를 최종 수신자에게 전달한다.
3. IP/PORT
개인 컴퓨터로 데이터를 전송할 때 먼저 IP주소
의 네트워크 주소를 이용해서 해당 네트워크로 전송하고, 해당 네트워크를 관장하는 라우터는 호스트 주소를 참조해서 알맞은 수신자에게 전달한다. IP주소를 이용하면 이렇게 컴퓨터까지 데이터를 전달할 수 있지만, 최종 목적지에 해당하는 응용 프로그램까지 전달할 수는 없다. 우리는 컴퓨터를 사용하면서 한 가지 일만 진행하지 않는다. 예를 들어, 게임을 하면서 동영상 스트리밍을 할 수 있고, 친구와 메신저를 주고받을 수도 있다. 이렇듯 컴퓨터를 사용하면서 여러 서버와 통신하기 때문에 데이터를 최종 목적지까지 잘 전달하려면 IP주소 외에 또 다른 정보가 필요하고, 이것이 PORT번호
이다. PORT번호를 이용하면 데이터를 최종 목적지인 응용 프로그램까지 전달할 수 있다.
4. IP주소의 클래스
C,A,B
클래스 | 네트워크 주소 길이 | 호스트 주소 길이 | IP주소 첫 번째 바이트 범위 |
---|---|---|---|
A | 1 byte | 3 byte | 0-127 |
B | 2 byte | 2 byte | 128-191 |
C | 3 byte | 1 byte | 192-223 |
5. 라우터/스위치
외부로부터 전달받은 데이터를 호스트에게 전달하고, 호스트가 전달하고자 하는 데이터를 외부로 보내는 역할을 한다.
6. Well-known PORT
Well-known PORT
란 특정 프로그램에 이미 할당되어진 포트 번호를 뜻하며 0-1023번 포트를 뜻한다. HTTP는 80, FTP는 20,21번이다. 포트 번호는 0부터 65535까지의 값을 가진다.
TCP/UDP의 포트 목록
7. sockaddr_in 구조체
sockaddr 구조체
를 보면 다음과 같다
struct sockaddr
{
sa_family_t sin_family;
char sa_data[14];
}
sa_data안에 port번호와 IP주소를 넣어야 하는데 사용하기 불편하게 되어있다. 이를 IPv4기준으로(port 번호 2바이트, IP주소 4바이트) 동일한 바이트 열을 편하게 구성할 수 있도록 만든 것이 sockaddr_in 구조체
이다.
struct sockaddr_in
{
sa_family_t sin_family;
unit16_t sin_port; //16비트
struct in_addr sin_addr; //32비트
char sin_zero[8] // 0으로 채워줘야 한다.
}
struct in_addr
{
in_addr_t s_addr;
}
8. 빅 엔디안(Big Endian)/리틀 엔디안(Little Endian)
엔디안은 1차원 공간에서 데이터를 배열하는 방식을 뜻하며, 빅 엔디안
은 작은 수가 뒤에 오는 방식이고 리틀 엔디안
은 작은 수가 앞에 오는 방식이다. 이를 메모리에 저장된 데이터의 관점에서 설명하면, 작은 단위의 수가 큰 번지수에 저장되면 빅 엔디안, 작은 번지수에 저장되면 리틀 엔디안이다. 따라서 같은 숫자라도 빅 엔디안 시스템과 리틀 엔디안 시스템에서 서로 다르게 해석되기 때문에 이러한 문제를 해결하고자 네트워크 바이트 순서를 빅 엔디안 방식으로 규정하고 있다.
9. 빅 엔디안(Big Endian)/리틀 엔디안(Little Endian)
네트워크 바이트 순서는 빅 엔디안 방식을 따르기 때문에 빅 엔디안을 사용하는 컴퓨터에서 데이터를 보낼 때는 그대로 전송하면 된다. 수신처가 리틀 엔디안 방식을 사용하더라도 전송받은 데이터가 빅 엔디안을 사용한다는 사실을 알고 있기 때문에, 이를 고려하여 데이터의 순서를 뒤집어서 사용하면 된다.
10. 루프백 주소(loopback address)
127.0.0.1로 표현되며 이는 컴퓨터 자신의 주소를 의미한다. 하나의 컴퓨터가 서버 겸 클라이언트로 동작할 때 사용되며 루프백 주소 대신에 컴퓨터의 실제 IP주소를 넣어도 똑같이 동작한다. 루프백 주소로 데이터를 전송하면, 데이터를 전송한 컴퓨터와 동일한 컴퓨터에 데이터가 저장된다.
Congratulations @syou! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit