네트워크 애플리케이션 개발의 중심은 다른 종단 시스템에서 동작하고 네트워크를 통해 서로 통신하기 위해 여러 종단 시스템에서 실행되는 소프트웨어를 작성해야한다. 하지만 네트워크 코어 장비에서 실행되는 소프트웨어는 작성할 필요 없다.
[네트워크 애플리케이션 구조]
1) 클라이언트 – 서버 구조
- 서버 ) 항상 켜져 있음 / 영구적 ip 주소 / 많은 호스트를 가지고 있는 데이터 센터
- 클라이언트 ) 서버와 소통 / 간헐적으로 연결됨 / 유동적인 ip주소 / 직접적으로 소통x
2) P2P구조
- 피어라는 간헐적으로 연결된 호스트 쌍이 서로 직접 소통함.
- 자기 확장성
- 비용 효율적
[프로세스 간 통신]
프로세스 : 종단 시스템에서 실행되는 프로그램
종단 시스템들은 소켓을 통한 메세지 교환으로 소통함
접속 요청 : 클라이언트 / 접속 기다림 : 서버
서로 다른 종단 시스템들이 소통을 하기 위해서는 각자의 주소가 필요함.
1 ) 호스트의 주소(ip주소).
2) 수신 프로세스를 명시하는 식별자가 필요함.
사용자는 많은 수신 프로세스를 사용할 수 있기 때문에 목적지 포트 번호가 이 목적을 위해. 사용됨.
[애플리케이션이 이용 가능한 트랜스포트 서비스]
소켓은 애플리케이션 프로세스와 트랜스포트 프로토콜 간의 인터페이스.
인터넷에는 많은 트랜스포트 프로토콜이 있는데 개발자는 하나를 선택해야함. 기준은?
기준 : 신뢰적 데이터 전송 / 처리율 / 시간 / 보안
[인터넷 전송 프로토콜이 제공하는 서비스]
1) TCP : 연결지향형 서비스(핸드쉐이크), 신뢰적인 데이터 전송 서비스, 혼잡시 속도를 낮춤.
2) UDP : 비연결지향형 서비스, 비신뢰적인 전송 서비스, 혼잡제어x, 원하는 속도로 데이터 송신
TCP와 UDP 모두 암호화x
[참조] Computer Networking: A Top Down Approach - J.F Kurose and K.W. Ross