celina의 이것저것
Chapter 2-1 본문
애플리케이션 구조의 2가지
클라이언트-서버 구조
server
항상 동작하고 있는 호스트
고정 IP주소
clients
서버와의 서비스는 클라이언트라는 다른 호스트들로부터 서비스 요청을 받는다
가끔, 또는 항상 켜져 있을 수 있다
내 주소는 항상 바뀐다(내가 피씨방에서 할수도, 폰으로 할수도, 노트북으로 할수도 있으니까)
클라이언트는 서로 직접적으로 통신하지 않는다
예)
클라이언트 호스트에서 실행되는 브라우저에서 -> 웹 서버로 서비스 요청
웹 서버가 클라이언트 호스트로부터 객체 요청 받음
웹 서버가 -> 요청된 객체를 클라이언트 호스트로 보내면서 응답
데이터센터 : 새로운 웹사이트가 하나의 서버로만 요청을 처리한다면 이에 맞춰 서버가 제대로 동작안해서 터질 수 있기 때문에 ㅁ낳은 수의 호스트를 갖춘 데이터 센터가 필요. 강력한 가상의 서버를 생성하는 역할
Peer-peer 구조
네트워크에서 컴퓨터들이 서로 대등한 관계를 맺고 직접적으로 통신하는 분산 시스템 구조
중앙 서버가 없이 컴퓨터들이 서로 데이터를 주고 받는 형태의 네트워크
각 컴퓨터가 동시에 클라이언트와 서버 역할을 수행할 수 있다
서버가 없으면 클라이언트들로만 구성된건가? -> 근데 클라이언트는 데이터가 없음(데이터는 서버에 있으니까) -> 그럼 데이터는 어디에 잇음? -> 누군가가 데이터를 갖고 있음 그래서 클라이언트 용어 안씀
피어(peer) : 간헐적으로 연결된 호스트, 모든 데이터 아닌 일부의 데이터를 가지고 있음
중앙 서버가 없기 때문에 각 컴퓨터가 서로를 피어로 인식하고 데이터를 주고 받는다
피어가 -> 피어에게 나에게 없는 데이터를 요청한다
peer가 늘었다 -> 데이터를 필요로 하는애가 증가 -> 수요가 증가
하지만 peer는 수요자임과 동시에 공급자이니까 내가 데이터를 추가로 공급할 수 있는 역량도 향상
-> 자가 확장성(self-scalability)
------------------------------------------------------------------------------------------------------------------------
프로세스 간 통신(Process communicating)
프로세스 : 컴퓨터 시스템에서 실행중인 프로그램
클라이언트 서버에는 클라이언트 프로세스가 있고 서버에는 서버 프로세스가 있다
p2p에는 클라이언트와 서버 기능을 하는 것들이 있다
두 프로세스 간의 통신 세션에서 통신을 초기화(다른 프로세스와 세션을 시작하려고 접속을 초기화)하는 프로세스를 클라이언트라 하고, 세션을 시작하기 위해 접속을 기다리는 프로세스를 서버라고 한다
소켓(socket) : data를 받기 위한 통로, 데이터를 주고받기 위한 소프트웨어 인터페이스
하나의 프로세스로부터 다른 프로세스로 보내는 메시지는 네트워크를 통해 움직임
프로세스는 소켓을 통해 네크워크로 메시지를 보내고 받음
송신자와 수신자 간의 통신 채널 역할
소켓이 생성되면 ip주소 및 포트번호와 같은 송수신자 정보와 함께 고유 식별자가 할당됨
일반적으로 TCP/IP 프로토콜을 사용
수신 프로세스를 식별하기 위해서 두가지 정보 필요
1. 호스트의 주소 : IP주소(호스트를 유일하게 식별)
2. 그 목적지 호스트 내의 수신 프로세스를 명시하는 식별자 : 포트번호
(일반적으로 한 호스트가 많은 네트워크 애플리케이션을 수행할 수 있기 때문에, 내 컴퓨터까지는 왔는데 내가 컴퓨터에 프로그램을 하나만 돌리는게아님 노래도 듣고, 웹 서핑도하고 여러개 하니까 헷갈리기때문에 구분해야하니까)
소켓은 애플리케이션 프로세스와 트랜스포트 프로토콜 간의 인터페이스
송신 측의 애플리케이션은 그 소켓을 통해 메시지를 보낸다. 그 소켓의 반대편에서 트랜스포트 프로토콜은 네크워크를 통해 그 메시지를 수신 프로세스의 소켓으로 이동시킬 책임이 있다
애플리케이션마다 동작하는 원리가 다르면 이런 프로토콜을 설계할때 고려해야하는것들은?
트랜스포트 게층 프로토콜이 그것을 이용하는 애플리케이션들에게 제공할 수 있는 서비스
1. 메시지 종류들이 어떻게 될까? request인지 response인지
2. 메시지 syntax신텍스(이 공간에 뭘 담고 여기는 정수로 표현하고 여기는 실수로 표현하고 등등)
3. 그 신텍스가 가지는 semantics의 의미 : 숫자1이라고 했지만 실제로는 버전1 이라고 해석될수도
4. 동작하는 원리 룰은 뭘까? request가 먼저야 response가 먼저야? when, how 이런것들 정의해야함
5. open protocols : 동작원리, 신텍스, 시맨틱 등등 다 오픈되어 있음 , 우리는 학습을 할 뿐 다 오픈은 아님
6.예 - 스카이프 지들만의 전화 안끊기는 기술이 있음 근데 오픈은 안함 뭐 이런거
7. 데이터 무결성
8. 타이밍
9. throughput
10. 보안
애플리케이션바다 요구 사항이 다른데 이러한 요구사랑은 애플리케이션 레이어 밑에 있는 트랜스포트, 네크워크 레이어 이런애들이 맞춰줘야한다
인터넷은 애플리케이션에게 2개의 전송프로토콜을 제공한다
트랜스포트 레이어 계층에서 사용되는 프로토콜 2가지!!!
1. TCP
연결 지향적이며 신뢰성 있는 데이터 전송을 보장
데이터 전송에 대한 순서 유지
손실된 데이터 재전송
중복된 데이터 제거하여 안정적인 데이터 전송 보장
신뢰성 보장하기 위해 오버헤드 발생, 전송속도 느림
2. UDP
비연결성, 비신뢰적인 데이터 전송 지원
데이터 전송 순서 보장 안함
재전송 및 중복 제거 안함
오버헤드가 적고 전송 속도가 빠르다
'대학생활 > 네트워크 프로그래밍' 카테고리의 다른 글
Chapter 2-6(기말고사 범위) (1) | 2023.05.08 |
---|---|
Chapter 2-4 (0) | 2023.04.15 |
Chapter 2-3 (0) | 2023.04.15 |
Chapter 2-2 (0) | 2023.04.14 |
Chapter 1 (0) | 2023.03.13 |