CS/네트워크

IP주소와 Port 번호

코딩하는 포메라니안 2021. 9. 22. 17:13

1. IP주소

1. 개념

- 컴퓨터를 구분하기 위해 사용되는 주소

- 네트워크 주소(subnet part) + 호스트 주소(host part)

 

 

2. 종류

1) IPv4 : 4bytes(32bits)

- 주소는 8bits씩 묶어 .으로 구분하여 표시 ex) 223.1.1.1 = 11011111 00000001 00000001 00000001

2) IPv6 : 16 bytes

=> tunneling : IPv4영역에 IPv6를 감싸서 속여서 보내기

 

 

3. 주소 체계

1) Classful Addressing

 

 

- IP주소를 규격화된 크기(class)별로 구분하는 주소체계

- 첫 번째 바이트의 비트 정보로 어떤 class를 쓰고 있는지 알 수 있다.

 

2) CIDR (Classless InterDomain Routing)

 

 

- class없이 서브넷마스크(prefix)로 네트워크 주소 부분의 비트 크기를 알 수 있다.

 

 

 

2. PORT 번호

1. 개념

- 소켓을 구분하는 용도

- 하나의 프로그램에서 2개 이상의 소켓이 존재할 수 있으므로, 2개 이상의 port가 하나의 프로그램에 할당될 수 있다.

 

 

2. 소켓 타입

- transport layer에서 나뉜다.

 

1) TCP(연결 지향)

- 중간에 데이터가 소멸되지 않는다.

- 전송 순서대로 수신이 된다.

- 데이터의 경계가 존재하지 않는다. ex) 1, 2, 3 다음 4가 와도 1, 2, 3, 4와 동일하게 받아들인다.

- socket 연결은 반드시 1:1

 

 

2) UDP(비연결 지향)

- 데이터 손실 및 파손 우려가 있다.

- 데이터의 경계가 존재 : 송수신자 socket이 1:1이 아니라서 어떤 host의 데이터인지 구별이 필요하기 때문

 

 

 

+) CPU에 따라 달라지는 정수 표현

- 송수신자 간의 데이터 해석이 같아야 하므로 통일해줄 필요가 있다.

 

 

- 빅 엔디안 : 상위 바이트의 값을 작은 번지수에 저장, 네트워크 바이트 순서

- 리틀 엔디안 : 상위 바이트 값을 큰 번지수에 저장 (거꾸로 읽음)

 

 

'CS > 네트워크' 카테고리의 다른 글

DNS 서버  (0) 2021.09.22
Network Layer  (0) 2021.09.22
TCP/IP 프로토콜  (0) 2021.09.22
OSI 7계층과 Socket Programming  (0) 2021.09.22