인터넷과 소켓프로그래밍

IPv4

kang057 2024. 7. 20. 01:29

● SOCKET 인터페이스 - Application Process와 TCP간의 통신 수단

- socket() : 네트워크 프로그래밍에서 사용되는 함수로, 소켓을 생성하는 역할을 한다. 소켓은 네트워크 상에서 통신을 수행하기 위한 엔드포인트(endpoint)를 나타낸다.

 

- bind() :   소켓 프로그래밍에서 소켓을 특정 주소와 포트에 바인팅(결합)하는 데 사용된다. 주로 서버 소켓에서 사용되며, 소켓이 수신할 IP 주소와 포트를 지정한다.

 

- listen() : 소켓 프로그래밍에서 서버 소켓을 수신 대기 상태로 만드는 데 사용된다. 클라이언트의 연결 요청을 받을 준비를 한다.

 

- accept() : 소켓 프로그래밍에서 서버가 클라이언트의 연결 요청을 수락할 때 사용된다. 새로운 연결을 처리하기 위해 사용된다.

 

- connect(), send() : 네트워크 프로그래밍에서 소켓을 사용하여 데이터를 전송할 때 중요한 역할을 한다. socket() 함수로 소켓을 생성한 후, 이 소켓을 원격 서버에 연결하고 데이터를 보내기 위해 이 함수들을 사용한다.

 

- write() : 파일 디스크립터를 통해 데이터를 쓰는 역할을 하먀, 소켓프로그래밍에서도 데이터를 전송하는 데 사용할 수 있다.

 

- read(), receive() : 소켓 프로그래밍에서 데이터를 수신하는 데 사용된다. 두 함수 모두 데이터를 읽어들이는 역할을 하지만, 사용 목적과 기능에 차이가 있다.

 

read() : 파일 디스크립터로부터 데이터를 읽어들인다. 소켓, 파일, 파이프 등 다양한 파일 디스크립터에 사용할 수 있다.

recv() : 소켓으로부터 데이터를 수신하는 데 특화된 함수이다. 플래그를 사용해 데이터 수신 동작을 제어할 수 있다.

 

- close() : 파일 디스크립터를 닫는 데 사용된다. 소켓 프로그래밍에서는 소켓 디스크립터를 닫아 연결을 종료하는 데 사용된다.

 

● AP간 정보교환을 위해 상대방 AP 식별자를 알아야 한다.

-> AP 식별자는 통신망에서 유일해야 한다.

<bits/socketh>

○ 동일한 프로토콜을 사용해야 한다.

   - 패킷 형식, 교환하는 패킷의 교환순서

○ 동일한 주소체계를 사용해야 한다.

   -인터넷 : IP주소, 

   - ISO/OSI RM : Service Access Point (SAP)

   - ex) 미국과 한국의 우편주소체계 다름

○ 상대방 네트워크 주소를 알아야 한다.

○ 상대방 호스트(노드) 주소를 알아야 한다.

○ 그 호스트내에서 AP를 식별해야 한다.

 

● 프로토콜(Protocol)

-> 네트워크 통신에서 데이터 전송 방식과 규칙을 정의한다.

 

○ 패킷의 형식 및 의미

- 네트워크에서 데이터를 전송할 때 사용하는 기본 단위로, 데이터와 그에 대한 제어 정보를 포함한다. 패킷의 형식과 내용은 사용하는 네트워크 프로토콜에 따라 달라진다.

 

○ 패킷의 교환 순서 정의

1. 연결 설성 (Connection Establishment) :
연결이 필요한 프로토콜(TCP 등)의 경우, 데이터 전송을 시작하기 전에 연결을 설정하는 단계가 필요하다. TCP의 경우, 다음과 같은 3-way 핸드셰이크 과정을 수행한다.

 

- SYN : 클라이언트가 서버에 연결 요청을 보내는 패킷을 전송한다.

- SYN-ACK : 서버는 클라이언트의 요청을 수락하고, 클라이언트에게 응답 패킷(SYN-ACK)을 전송한다.

 -ACK : 클라이언트는 서버의 응답을 수락하고, 연결 설정을 완료한다.

 

2. 데이터 전송 (Data Transfer)
연결이 설정된 후, 실제 데이터 전송이 이루어진다. 

 

○ TCP

- 데이터는 세그먼트로 나뉘어 전송된다.

- 각 세그먼트에는 시퀀스 번호와 확인 응답 번호가 포함되어 데이터의 순서와 무결성을 보장한다.

- 수신자는 데이터의 정확성을 확인하고, 손실된 세그먼트에 대한 재전송 요청을 할 수 있다.

 

3. 연결 종료 (Connection Termination)

데이터 전송이 완료되면, 연결을 종료하는 단계까 필요합니다. TCP의 경우, 다음 같은 4-way 핸드세이크 과정을 수행한다.

 

- FIN : 송신자가 연결 종료 요청을 보내는 패킷을 전송한다.

- ACK : 수신자는 종료 요청을 수락하고, 종료 요청에 대한 확인 응답을 전송한다.

- FIN : 수신자는 자신의 종료 요청을 송신자에게 전송한다.

- ACK : 송신자는 수신자의 종료 요청을 수락하고, 연결 종료를 완료한다.

 

● 통신에 필요한 요소 - 주소 (Address)

○ Unique 해야 함

○ 2단계

  ▷unique global network & host address

    - 네트워크상에 각 호스트에 대해 고유 주소 지정

    - 데이터가 호스트에 적당히 전달

  ▷ unique process address

     - 호스트내에 각 프로세스를 식별

     - Host-to-Host protocol (ex: TCP)은 데이터를 적당한 프로세스에 전달

     - 'port'

 

● IP 주소와 Port 번호

=> IP 주소 : IP 주소는 네트워크 상의 특정 장치를 식별하는 데 사용되는 고유한 주소입니다. 인터넷 프로토콜을 사용하는 네트워크에서 장치의 위치를 지정한다.

=> Port 번호 : 포트 번호는 특정 IP 주소 내에서 실행 중인 특정 애플리케이션이나 서비스를 식별하는 숫자이다. 통신의 끝점을 지정한다.

 

IP 주소와 포트 번호는 함께 사용되어 네트워크 통신을 위한 완전한 주소를 형성한다. 이를 통해 특정 네트워크 장치와 그 장치 내에서 실행 중인 특정 애플리케이션을 정확하게 지정할 수 있다.

 

● IP 주소 구조

- 네트워크 식별자 + 호스트 식별자

- host id : 특정 네트워크에서 호스트에 주소 할당

 

● IPv4 인터넷 주소 체계 

- 32비트 크기구

 

○ 3 Classes

- A 등급 : 0으로 시작, net id : 7 bit, 126 / host : 24bit, 16777214

- B 등급 : 10으로 시작,  net id: 14 bit, 16384 / host : 16bit, 65534

- C 등급 : 110으로 시작, net id: 21bit, 2097152 / host : 8bit, 254

 

○ Communiclation type

- Unicast (point-to-point) => 1:1

- Multicast (point-to-multipoint) => 1:m

- Broadcast (point-to-all) => 1:all

 

○ D class 

- Group address/multicast address

- 1110으로 시작