Creating a network app
- end system(끝단 시스템)에서 실행되고, 네트워크와 통신한다.
- 예를 들어서, 웹 서버 소프트웨어는 브라우저 소프트웨어와 통신한다.
네트워크 코어 장치용 디바이스를 작성할 필요는 없다.
- 네트워크 코어 장치는 사용자 애플리케이션을 실행하지 않는다.
- end systems에서 실행되는 애플리케이션은 빠른 앱 개발 및 전파(propagation)가 가능하다.
Client-server paradigm
서버
- 항상 켜져 있는 호스트
- 영구적인(permanent) IP address
- 확장(scaling)을 위해 데이터센터에서 사용됨
클라이언트
- 서버와 연결하고 통신함
- 일시적으로(intermittently) 연결됨
- dynamic IP addresses
- 서로간에 직접적으로 통신하지 않음
Peer-peer architecutre
항상 서버가 켜져있지 않다.
임의의 끝단 시스템(arbitrary end systems)이 직접 통신한다.
peer들은 다른 peer들로부터 서비스를 요청하고, 다른 peer에게 서비스를 제공한다.
self scalability - 새로운 peer가 새로운 서비스 capacity 및 새로운 서비스 수요(demand)를 제공
peer들은 일시적(intermittently)으로 연결되고 IP주소가 변경될 수 있다. - 복잡한 관리가 필요하다.
Processes communicating
프로세스: 호스트 내에서 실행되는 프로그램
같은 호스트 내에서는 두 개의 프로세스가 IPC를 사용해서 통신한다.
다른 호스트의 프로세스들은 메시지를 교환하여 통신한다.
Sockets
프로세스는 소켓으로 메시지를 주고받는다.
소켓은 문으로 비유할 수 있다. 송신 프로세스는 메시지를 문 밖으로 내보낸다.
송신 프로세스는 메시지를 받는 쪽의 소켓으로 전달되기까지 전송 인프라(transport infrastructure)에 의존(relies)한다.
두 개의 소켓이 있는데, 한 쪽은 송신, 한 쪽은 수신 프로세스에 있다.
Addressing processes
메시지를 수신하려면 프로세스는 식별자(identifier)를 가져야한다.
호스트는 고유한 32비트의 IP address를 가지고 있다.
port number까지 있어야 프로세스를 식별해낼 수 있다.
application-layer protocol 정의
교환되는 메시지의 종류 : request / response ..
message syntax : 메시지에 포함되는 필드와 필드 구분(delineated) 방법
message semantics : 필드 정보의 의미
rules : 프로세스가 메시지를 언제, 어떻게 보내고 받는지 규칙
open protocols
- RFC에서 정의돼있고 프로토콜 정의에 대해서 모두의 접근이 가능
- 상호운용성(interoperability)을 가능하게 함
proprietary protocols : Skype, Zoom ...
어떤 transport service가 앱에 필요할까?
data integrity(데이터 무결성)
- 일부 애플리케이션은 100% 신뢰성 있는 데이터 전송이 필요하다.
- 다른 애플리케이션은 일부 손실을 허용할 수 있다.
timing
일부 애플리케이션은 effective가 되기 위해 낮은 지연율을 요구한다.
throughput(처리량)
- 일부 애플리케이션은 effective 되기 위해 충분한 throughput을 필요로 한다.
- 탄력적인 애플리케이션은 throughput이 충분하지 않아도 throughput을 활용해서 작동한다.
security
- encryption(암호화), data integrity ...
Internet transport protocols services
TCP service
- 신뢰성있는 전송(reliable transport) : 송수신 프로세스간 신뢰성 있는 전송
- flow control : 수신자의 처리 속도에 맞춰서 송신자가 데이터를 전송하도록 제어, 수신자가 오버로드되지 않도록함.
- congestion control : 네트워크의 혼잡 상황을 감지해서 송신자의 데이터 전송 속도를 제한(throttle), 네트워크 혼잡 방지
- connection-oriented(연결 지향적) : 클라이언트/서버 간 연결을 설정하고 데이터 전송이 끝나면 연결 해제
- 제공하지 않는 것 : timing, minimum throughput guarantee(최소 처리량 보장), security
UDP service
- unreliable data transfer : 데이터 송수신간 신뢰성을 보장하지 않음
- 제공하지 않는 것 : 신뢰성, flow control, congestion control, timing, throughput guarantee, security, or connection setup
TCP 보안
Vanilla TCP & UDP sockets:
- encryption(암호화)되지 않음
Transport Layer Security (TLS)
- TCP 연결에 암호화를 제공한다.
- 데이터 무결성
- end-point authentication(인증), 서버의 신원을 확인할 수 있음.
앱은 TLS 라이브러리를 사용하고, 라이브러리는 TCP를 사용한다.
데이터는 소켓으로 전송되고, 인터넷을 통해 암호화된다.
'학교강의필기장 > 컴퓨터네트워크' 카테고리의 다른 글
컴퓨터네트워크[6]: Domain Name System DNS (0) | 2023.04.19 |
---|---|
컴퓨터네트워크[5]: E-mail, SMTP, IMAP (0) | 2023.04.19 |
컴퓨터네트워크[4]: Web and HTTP (0) | 2023.04.18 |
컴퓨터네트워크[2]: 인터넷구조, performance, protocol layers (0) | 2023.04.18 |
컴퓨터네트워크[1]: The network core (0) | 2023.04.18 |