2018. 5. 7. 17:03ㆍ개발노트
▣응용 계층 패러다임 (응용계층은 논리적)
모든 응용 프로그램들이 서비스 요청과 제공을 할 수 있어야 할까? Peer to Peer
응용프로그램들이 서비스 제공, 요청 한 가지 일만 하면 될까? 클라이언트 모델
□클라이언트서버 모델(역할이 나누어짐, 서비스 요청하거나, 제공 하거나)
항상 서버에 접속 가능
잘 알려져 있고 서비스내용 보장 된다.
누가참여하고 있는지 알 수 있다.
□Peer To Peer 모델(모두 대등하게 서비스 요청, 제공 가능)
서버가 wake up하고 있어야 접속가능 모두가 주고받기 가능
서비스 불명확 (어느 파일이 어디에 있는지 모름)
누가 참여하고 있는지 모른다.
▣응용프로그래밍 인터페이스 (API)
소켓 주고 받고.
클라이언트는 서버에 소켓을 줄 때 자신의 IP주소를 함께 줘야 다시 받을 수 있다.
well known 포트 + IP = 소켓 주소
(16 bits) (32 bits)
클라이언트는 well known 포트로 접속 할 수 있는데
접속에 성공하면 연결을 끊고 임의의 포트로 연결시켜서 다른 사용자가
well known 포트를 사용 할 수 있게 한다. (portmapper 가 하는 일)
예를 들면 처음 접속은 21번 포트로 했다고 해도 다른 사용자를 위해
웰논 포트를 끊고 다른 포트로 연결시켜준다.
서버는 수동적
▣UDP (무접속, 비신뢰성, 테이터그램 서비스 제공)
무접속 = 두 종단 사이 논리적 연결 없음
목적지에 도착하지 못하고 무한루프 도는 것을 방지하기 위해
-time stamp (시간제한을 둔다.)
-hop count (통과하는 개수 제한을 둔다.)
데이터그램 패킷 안에 캡슐화된 독립적인 객체
사용범주 : 소량의 메시지 전송, 간편함과 속도가 중요할 경우
▣TCP (연결 지향적, 신뢰성, 비트스트림서비스 제공)
두 종단이 연결설정 패킷을 교환함으로 논리적 연결을 먼저 만들도록 요구
문제점 : 메시지 교환에 대한 영역을 제공하지 않는다.
▣파일전송프로토콜 (FTP)
두 연결의 라이프 타임
제어연결 : 접속 중 계속 연결 상태
well-known port : 21
데이터 연결 (연결지향통신:communication over Date Connection)
File Transfer 동안만 연결 설정과 해제를 반복
▣FTP보안 (Security for FTP)
비밀번호는 평문으로 전송, 가로채기 위험
보안 소켓 계층 추가 : SSL-FTP
전자우편
-사용자들에게 메시지 교환 제공
*구조 (Architecture)
*UA : 사용자 에이전트 (User Agent)
*MTA : 메일 전송 에이전트 (Message Transfer Agent)
보내는 쪽과 받는 쪽이 비대칭 보내는 쪽은 실시간 받는 쪽은 쌓아놓아야..
*MAA : 메시지 접근 에이전트 (Message Access Agent)
TELNET (port:25)
shell이 자신이 아닌 다른 shell을 이용 할 수 있도록 해준다. 원격제어와 비슷하다.
SSH (port:22): TCP와 어플리케이션 사이의 계층 TCP의 보안 취약성 보완
SSH인증 프로토콜
서버에 대해 클라이언트 인증
클라이언트에서 서버로 사용자이름 ,서버이름, 인증방법 등 전송
패킷형식에 padding부분을 추가해서 읽기 힘들게 했다. (보안강화)
대등 대 대등
중앙 집중 형 네트워크 = client Sever, p2p
P2P paradigm
black bored system : 실시간 채팅에 사용되는 시스템 ex)카톡
클라이언트 서버 = master slave 방식이라고도 하는데
사용자가 무조건 master(sever)를 거쳐서 내용을 주고받을 수 있기 때문
P2P 문제점/해결책
참여자(peer)와 자원의 존재를 모두 알고 있어야한다.
자원을 구별하기 위해서는 unique identify 를 가지고 있어야 한다.
알리기 위해서는 flooding 이 필요한데 너무 많아져서 문제 발생 (사용자들, 자료들, 서버들...)
해결하기 위해서 Hash 함수를 사용 unique identify를 가지게 한다.(사용자, 자료)
고유한 peer번호와 자료를 가졌기 때문에 어떤 peer에 어떤 정보를 가지고 있는지 물었을 때 알려준다. (토렌트의 방식)
▣전송계층
양쪽 끝에 존재한다.
-프로세스 간 통신
-다중화
-오류/흐름/혼잡제어
Stop-and-Wait, Go-Back-N, Selective-Repeat
ACK : 송신책, 수신책이 Data를 주고 받았다는 것을 알려줌
sequence number : 패킷에 번호를 적어줌으로써 Data를 여러 개 안정적으로 받을 수 있음
timer : Data를 주고 받을 때 시간을 축정해서 최소한의 시간만큼 기다림
+
buffer
위에 장치들을 조합해서 프로토콜을 만든다
주소체계: 포트번호
서버, 클라이언트 모두 포트번호를 주고 받아야한다.
(자신이 어느 포트이고 어느 포트를 사용할 것인지)
ip address와 port를 사용 mac address를 구분해준다.
소켓주소 : ip주소와 포트번호 조합
흐름제어
pushing일 때 문제가 더 발생하기 때문에 다른 장치가 필요하다.
순서번호는 바이트시퀀스번호, 넘버시퀀스번호를 쓸 수 있다.
슬라이딩윈도우에 꼭 필요한 장치
sequence number, buffers(송, 수신 모두필요)
buffer의 크기는 윈도우size
sequence number과 윈도우 사이즈버퍼 크기의 대소관계가 있다.
(윈도우 사이즈가 sequence number의 1/2 보다 작아야한다.)
□ 슬라이딩 윈도우(Sliding Window)
대부분의 프로토콜에서는 선형 표현 방식을 이용해 슬라이딩 윈도우 표현 어떠한 표현 방식이건 동작 방식은 동일함
속도를 증가시키려면 알고리즘이 복잡
오류를 없애려면 속도감소
Stop-and-Wait Protocol 자동 흐름제어가 특징(연결지향)
안전하지만 전송양이 적다. (중요한 데이터 장거리 전송할 때 사용한다.)
비용이 저렴하다.
Stop-and-Wait Protocol 에서
패킷번호 1
순서번호 2
확인응답 번호 ACK(↓ )
1. 받은 packet ok
2. 기대되는 next packet#
패킷이 정상적인 시간에 출발하지 않을 수 있으므로
타이머를 expire가 되도록 길게 잡는다.
그 전에 도착하면 이상적이지만 expire 이후에 도착하면 무시한다.
이는 expire가 되면 재전송하기 때문이다.
만약 요구한 패킷이 도착하지 않고 다른 패킷이 도착할 경우 폐기한다.
Go-Back-N(GBN)
순서번호를 사용
버퍼크기가 늘어난다
타이머가 있어야 한다
ACK사용
슬라이딩 윈도우 사용
순서번호와 슬라이딩 윈도우 크기는 같지 않다.
수신 윈도우 크기는 항상 1
송신 윈도우크기는 1보다 작아야한다.
(윈도우 크기는 순서번호 크기보다 1 작아야 한다.)
순서번호는 패킷번호, 패킷의 위치가 될 수 있다.
Selective-Repeat Protocol
ACK를 못 받은 패킷 재전송
각 송신 측 마다 타이머가 존재한다.
윈도우 크기만큼의 타이머가 필요하다.
Go-Back-N은 못 받은 패킷으로 되돌아가지만
SR은 못 받은 패킷을 재전송 시킨다. 윈도우 크기는 의 절반