Network Programming
드디어 통신!
클라이언트 서버 프로그래밍 모델 |
모든 네트워크 응용 프로그램은 클라이언트 서버 모델에 기초하고 있다. 서버는 일부 리소스를 관리하고 이 리소스를 조작해서 클라이언트를 위한 일부 서비스를 제공한다. 클라이언트-서버 모델에서 근본적인 연산은 트랜잭션이다. |
트랜젝션 | 트랜잭션은 네단계로 구성된다. 1. 클라이언트가 서비스를 필요로 할 때, 클라이언트는 한 개의 요청을 서버에 보내는것으로 트랜잭션을 개시한다. 2. 서버는 요청을 받고, 해석하고, 자신의 자원들을 적절한 방법으로 조작한다. 3. 서버는 응답을 클라이언트로 보내고, 그 후에 다음 요청을 기다린다. 4. 클라이언트는 응답을 받고 이것을 처리한다. |
네트워크
네트워크 | 네트워크는 단지 또 다른 I/O 디바이스이다. (네트워크는 파일 파일은 네트워크) 네트워크 어뎁터로 전송받은 데이터는 대개 DMA 전송으로 복사된다. 물리적으로 네트워크는 계층구조로 이루어져있다. |
네트워크의 계층 | 하위 수준은 LAN으로 빌딩이나 캠퍼스에 설치된다. LAN은 이더넷 이더넷 세그먼트는 위 사진처럼 몇개의 전선들과 허브(스위치, 공유기)라고 부르는 작은 상자로 구성된다. 한쪽 끝은 호스트의 어댑터에 연결되고 다른 끝은 허브의 포트에 연결된다. 이더넷 어댑터는 고유한 48비트 주소를 가진다. 호스트는 프레임이라고 부르는 세그먼트의 다른 호스트에 보낼 수 있다. |
프레임 | 각 프레임은 프레임의 소스와 목적지, 프레임의 길이를 식별할 수 있는 고정된 헤더 비트(encapsulation)를 가지고 있다. 모든 호스트 어댑터는 이 프레임을 볼 수 있지만 목적지 호스트만이 실제로 이것을 읽어들인다.(decapsulation) |
브릿지 | 위 사진과 같이 브릿지라고 하는 작은 상자들을 통해 다수의 허브를 연결할 수 있다. (브릿지형 이더넷) 브짓지는 허브보다 더 높은 전선의 대역폭을 가진다. 어떤 호스트가 어떤 포트에서 도달 가능한지 장기간에 걸쳐 학습하고 (다익스트라 알고리즘), 그 후 필요한 경우 선택적으로 하나의 포트에서 다른 포트로 프레임을 복사한다. |
라우터 | 계층구조의 상부에서 다수의 비호환성 LAN들은 라우터라고 부르는 특별한 컴퓨터에 의해서 연결될 수 있으며, 라이터는 네트워크 간 연결을 구성한다. 각 라우터는 이들이 연결되는 각 네트워크에 대해 어댑터를 가지고 있다. 라우터는 point to point 전화 연결을 할 수 있으며, 이들은 WAN이라고 부른다. (넓은 범위 커버 가능) 이런 구성이 모여 인터넷 internet이 연결된다. |
인터넷의 데이터 전송 | 여러가지 네트워크 간의 차이를 줄여줘 호스트와 라우터간 통신을 가능하게 하는데 이는 프로토콜 소프트웨어 계층에서 이루어진다. (Network Data Link) 주로 데이터를 패키징한 패킷으로 변경해서 전송을 시도하는 전달기법이 많이 사용된다. |
전달기법 | 총 8개의 단계로 나누어져 있다. 1. 호스트 A의 클라이언트는 클라이언트의 가상 주소공간에서 커널 버퍼로 데이터를 복사하는 시스템콜을 호출한다. 2. 호스트 A의 프로토콜 소프트웨어는 (Transport, Network, Data Link 계층)internet 헤더와 LAN1 프레임 헤더를 데이터에 추가해서 LAN1 프레임을 생성한다. internet 헤더는 internet 호스트 B로 주소, 라우터의 주소가 지정되고 이를 어댑터로 전달한다. 이 데이터를 패킷이라고 부르고 이것을 캡슐화라고 한다. 3. 어댑터는 이 프레임을 네트워크로 복사한다. 4. 프레임이 라우터에 도달하면, 라우터의 어댑터는 전선에서 이것을 읽어서 프로토콜 소프트웨어로 전달한다. 5. 라우터는 internet 패킷 헤더에서 목적지 internet 주소를 가져와서 패킷을 전달할 곳을 결정하기 위해 이전의 프레임 헤더를 벗겨내고, 호스트 B의 주소를 갖는 새 프레임 헤더를 앞에 붙여서 이것을 어댑로 전달한다. 6. 라우터는 이 프레임을 네트워크로 복사한다. 7. 이 프레임이 호스트 B에 도착하면 어댑터는 이 프레임을 프로토콜 소프트웨어로 넘긴다. 8. 프로토콜 소프트웨어는 최종적으로 이 데이터를 서버의 가상 주소공간으로 복사한다. |
소켓 인터페이스
소켓 | 인터넷 연결을 소켓이라고 하는 fd로 이루어진다. 소켓 인터페이스란 소켓을 제어하기 위한 함수의 집합임 해당 함수들에 대한 설명은 이번주차 실습인 Tiny_web과 Proxy server를 분석하면서 서술하겠음 |
'Krafton_Jungle > Study' 카테고리의 다른 글
Krafton_jungle 5기 7주차 WIL - System-Level I/O (0) | 2024.05.08 |
---|---|
Krafton_jungle 5기 7주차 WIL - Tiny web server (0) | 2024.05.06 |
Krafton_jungle 5기 7주차 WIL - OSI 7계층 (2) | 2024.05.02 |
Krafton_jungle 5기 6주차 WIL - Exceptional Control Flow (0) | 2024.05.01 |
Krafton_jungle 5기 6주차 WIL - The Memory Hierarchy (3) | 2024.04.30 |