Internet | ISO/OSI 7계층 |
---|---|
응용 계층 | |
응용 계층 | 프레젠테이션 계층 |
세션 계층 | |
전송 계층 | 전송 계층 |
네트워크 계층 | 네트워크 계층 |
링크 계층 | 링크 계층 |
물리 계층 | 물리 계층 |
- Client-Server 구조
- 응용을 서비스 해주는 컴퓨터를 따로 두는 구조
- 내가 원하는 상황을 지원할 수 있는 실제 엔드유저를 찾지못하면 딜을 실패함
- 예시)
- 웹 검색
- Pear-to-Pear(P2P) 구조
- 토렌트
- 하이브리드 구조
- 필요할 때는 서버가 관리를 하지만 직접 연결할 수 있을 때는 직접 연결함
- 예시)
- Skype
- 스타크래프트
- 응용 : 네트워크로 연결된 컴퓨터들이 협력하여 제공하는 서비스
- 예시) 구글 검색
- 프로세스
- 하나의 컴퓨터에서 독립된 메모리 공간을 가지고 수행되고 있는 프로그램의 단위
- 프로세스의 종류
- 서버 프로세스
- 클라이언트 프로세스
- 피어 프로세스
=> 프로세스간 통신 - 응용을 이룰 때 어떻게 웹 브라우저가 웹 서버와 통신을 하는가
=> IP 주소와 포트 번호를 알고 있으면 서로 간의 통신이 가능함
- 소켓을 통해서 웹 브라우저-서버 간에 정보를 주고받고, 소켓은 재활용됨
- TCP의 경우
- 소켓
- 서버 소켓
Internet | ISO/OSI 7계층 |
---|---|
응용 계층 | |
응용 계층 | 프레젠테이션 계층 |
세션 계층 | |
소켓 | 소켓 |
전송 계층 | 전송 계층 |
- TCP
- 연결기반 전송계층
- 연결에 대한 관리
- 데이터 유실
- 데이터 순서 보장
- 혼잡에 민감한 패킷전송률 조정
- UDP
- 무연결 전송계층
- 데이터 유실 가능
- 데이터 순서 역전 가능
- 최대한 성능으로 패킷 전송
응용 계층 | |
프레젠테이션 계층 | |
세션 계층 | -> FTP / HTTP |
소켓 | |
전송 계층의 서비스 |
- FTP (File Transfer Protocol)
- 목적 원격 host에 있는 파일을 가져오거나 원격 host에 파일을 보내기 위한 protocol
- 가정1 : client 사용자는 server와 파일을 읽을 수 있는 권한의 계정이 있다
- 가정2 : 계정이 없는 경우도 접근하도록
- 특징
- 세션 로그인과 종료가 존재
- 로그인을 통하여 권한 획득
- 로그인 정보를 서버가 관리
- Stateful Protocol
추가
-
- 서버 : 항상 켜져있는 호스트, 영구적인 IP를 가지며 응답가능한 데이터 센터
- 클라이언트 : 간헐적으로 켜져있는 호스트, 유동적인 IP를 가지며 정보를 요청
- 서버와 클라이언트가 직접 소통하지 X
-
- 항상 켜져있는 서버가 없음
- 호스트가 직접 연결되어, 요청-응답하는 방식으로 동작
- => 서버가 컨텐츠를 제공하는 것이 아니라 임의의 end system들끼리 직접 컨텐츠를 송/수신하는 구조
- 자가 확장성 - 작업부하를 주지만, 파일을 다른 피어에 분배해서 서비스 능력 추가 => 사용자가 많을수록 파일 분배 속도도 빨라짐
- 피어는 간헐적으로 연결되며, IP주소도 바뀔 수 있어 관리가 복잡함
-
protocol : 전송계층에서 송신자와 수신자 간 데이터를 보내기 위해 사용
-
TCP(Transmission Control Protocol)
- 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
- 신뢰할 수 있는 전송(reliable transport)
- 흐름 제어(flow control) : 수신 한도를 넘어 손실(loss)가 일어나지 않도록 양을 조절
- 혼잡 제어(congestion control) : 흐름 제어가 호스트 간의 트래픽을 조절한다면, 혼잡 제어는 네트워크 차원
- 연결 기반(connection-oriented) : 클라이언트와 서버 간 사전설정이 필요 (논리적 경로를 배정)
- 속도가 느림
-
UDP(User Datagram Protocol)
- 데이터를 데이터그램 단위로 처리하는 프로토콜
- 데이터그램 - 독립적인 관계를 지니는 패킷
- 비연결형 프로토콜 -> 연결을 위해 할당되는 논리적인 경로가 없음
- 각각의 패킷은 다른 경로로 전송되고, 독립적으로 처리함
- 오버헤드(CPU, 메모리 소요)가 적어서 단방향 빠른 전송 가능
- 신뢰성이 낮음