본문 바로가기

CS/컴퓨터 네트워크

(19)
6. 어플리케이션 레이어 : 클라이언트-서버, P2P * 인터넷을 사용하는 모든 어플리케이션 이메일, 웹, text messaging, remote login, p2p file sharing, game, video streaming, voice over ip, 등 * 네트워크를 지원하는 프로그램 작성 방법 - 사용하는 디바이스에서 카톡, 크롬, 네이버 등 다른 누군가와 통신할 때 데이터를 주고받을 수 있는데 이 때 네트워크를 지원하는 프로그램 작성 방법 : end system, p2p, client-server 등의 상황에서의 각 end system에서 프로그램을 구현하고 소켓만 구현하면 통신 가능 어플리케이션 레이어에서는 end에서 client-server, p2p 등 어떤 구조를 할지 결정 트랜스포트 레이어에서 어떻게 메세지를 사용해서 전달할 건지 (t..
실습 3-2. 주소정보 표현, 인터넷 주소 변환 * IPv4 기반의 주소표현을 위한 구조체 struct sockaddr_in { sa_family_t sin family; // 주소체계 uint16_t sin_port; //port 번호 struct in_addr sin_addr; //32비트 ip주소 char sin_zero[8]; //사용되지 않음 }; ip 주소와 port 번호는 구조체 sockaddr_in의 변수에 담아서 표현함 - sockaddr_in은 bind 함수의 구조체 주소를 전달하는 구조체 이 구조체에 각 정보를 저장하고 소켓주소를 할당하는 bind함수의 인자로 들어가게 됨 이때 ip 주소 저장 변수는 또 다른 구조체로 되어 있음 : struct in_addr struct in_addr{ in_addr_t s_addr; }; // 3..
실습 3-1. 소켓에 할당되는 IP주소와 PORT 번호 * 인터넷 주소 - 인터넷 상에서 컴퓨터를 구분하는 목적으로 사용되는 주소 - 4바이트 주소체계인 IPv4와 16바이트 주소체계인 IPv6가 존재 - 소켓을 생성할 때 기본적인 프로토콜을 지정해야 함 - 네트워크 주소와 호스트 주소로 나뉨 * 클래스별 네트워크 주소와 호스트 주소의 경계 - 하나의 네트워크를 묶어둔 것이라고 보면 됨, 각 크기별로 다름 A가 제일크고 아래로 내려갈수록 작아짐 - 크기가 크다는 것은 호스트 개수가 많다는 것을 의미 - 클래스 A : 0~127, 클래스 A의 첫번째 비트는 항상 0으로 시작 - 클래스 B : 128~191, 클래스 B의 첫번째 비트는 항상 10으로 시작 - 클래스 C : 192~223, 클래스 C의 첫번째 비트는 항상 110으로 시작 -> 첫번째 바이트 정보만..
실습 2-1. 소켓의 프로토콜과 특성 *프로토콜 이란 - 개념적으로 약속의 의미 - 컴퓨터 상호간의 데이터 송수신에 필요한 통규약 - 소켓을 생성할 때 기본적인 프로토콜을 지정해야함 #include int socket(int domain, int type, int protocol); domain : 소켓이 사용할 프로토콜 체계 정보 전달 type : 소켓의 데이터 전송방식에 대한 정보 전달 protocol : 두 컴퓨터간 통신에 사용되는 프로토콜 정보 전달 매개변수가 모두 프로토콜 정보와 관련이 있다 * 프로토콜 체계 - 프로토콜도 그 종류에 따라서 부류가 나뉘는데, 그 부류를 가리켜 프로토콜 체계라 한다. - 프로토콜의 체계 PF_INET은 IPv4인터넷 프로토콜 체계를 의미 - 소켓함수 매개변수 중 첫번째 파라미터 PF_INET IPv4..
5. 프로토콜 레이어 아키텍처와 서비스 모델 * 레이어링 아키텍처 여러가지 복합적인 과정을 레이어로 나누어서 구조를 만듦 복합적인 프로세스 관리가 편리하고 유지보수 유용 modulization 한가지 특정 기능에 문제가 생기면 그 레이어의 문제만 처리하면 됨 레이어링의 단점은 각 과정을 계속 끊어서 프로세스를 진행한다는 것 레이어링을 하지 않으면 문제가 발생했을 때 찾기가 힘듦 *인터넷 프로토콜 스택 -어플리케이션 레이어 : ftp, smtp, http -전송 레이어 : tcp, udp -네트워크 : ip -링크 : 802.11 -피지컬 : 랜선, 무선 등 이 레이어들이 복합적으로 만들어져서 우리가 사용하는 인터넷을 제공 *iso/osi 레퍼런스 모델 5계층으로 보면 애매한 부분이 생김 -프레젠테이션 레이어 : 암호나 압축을 하는 계층 -세션 레이..
4. 네트워크의 delay, loss, throughput * QUEUEING DELAY 링크에 데이터가 들어오는 rate가 나가는 rate보다 크면 패킷이 쌓이고 큐에서 줄을 섰다가 다시 나가기 전까지의 시간이 delay 저장 공간이 큐보다 작아서 패킷 drop이 생기고 이를 loss라고 함 *패킷 지연의 네가지 구성요소 -nodal processing : 패킷이 라우터에 들어오고, 오류를 체크하고 오류가 있다면 바로 drop하고 그 다음 테이블을 보고 output link를 결정 - queueing delay : 너무 빠른 속도로 들어오는데, 나가는 속도가 느려서 큐에 쌓였다가 나가는 시간 congestion이 queueing delay에 많은 영향을 줌 - transmission delay : l(패킷의 길이)/r(링크의 대역폭) - propagation ..
실습 1-3. 저수준 파일 입출력과 파일 디스크립터 * 저수준 파일 입출력 write() read() 운영체제가 제공하는 함수 기반 파일 입출력 표준이 아니라서 운영체제에 대한 호환성이 없음 리눅스는 소켓도 파일로 간주해서 저수준파일 입출력함수를 기반으로 소켓 기반의 데이터 통신 가능 *파일 디스크립터 운영체제가 만든 파일을 구분하기 위한 일종의 숫자 저수준 파일 입출력 함수는 입출력을 목적으로 파일 디스크립터를 요구함 조수준 파일 입출력 함수에게 소켓의 파일 디스크립터를 전달하면 소켓을 대상으로 입출력을 진행 파일 디스크립터 대상 0 표준입력 1 표준출력 2 표준에러 [파일 열기 닫기] #include #include #include int open(const char* path, int flag); path : 파일 이름을 나타내는 문자열의 주소값 전..
실습 1-2. 서버소켓, 클라이언트소켓 구현 https://snnchallenge.tistory.com/55 불러오는 중입니다... [서버소켓] 소켓 생성 -> ip port 번호 할당 -> 연결요청 가능한 상태로 변경 -> 연결 요청 수락 https://github.com/o920/inha/blob/master/ComputerNetworks/hello_server.c o920/inha course. Contribute to o920/inha development by creating an account on GitHub. github.com #include #include #include #include #include #include void error_handling(char* message); int main(int argc, char* a..