계층별 세부설명

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 addressport를 사용 mac address를 구분해준다.

 

소켓주소 : ip주소와 포트번호 조합

 

흐름제어

pushing일 때 문제가 더 발생하기 때문에 다른 장치가 필요하다.

 

 

순서번호는 바이트시퀀스번호, 넘버시퀀스번호를 쓸 수 있다.

 

슬라이딩윈도우에 꼭 필요한 장치

sequence number, buffers(, 수신 모두필요)

buffer의 크기는 윈도우size

sequence number과 윈도우 사이즈버퍼 크기의 대소관계가 있다.

(윈도우 사이즈가 sequence number1/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은 못 받은 패킷을 재전송 시킨다. 윈도우 크기는 의 절반