목록Computer Science/네트워크 (21)
가자미의 개발이야기
a. TCP의 특징 간단요약 point to point : 한 리시버와 한 센더가 참여. 신뢰성(rdt지원), in order 지원 pipelined 형식(버전에 따라 gbn, selective 형식 지원) 센드 버퍼와 리시브 버퍼 존재 한 연결에서 양방향 데이터 흐름 connection oriented(handshaking) 센더와 리시버의 상태정보를 기억. flow controlled 처리 속도보다 전송 속도가 빠를 경우 속도를 조절. b. TCH 헤더 sequence number, ack => rdt에 사용되는 기능 시퀀스 번호와 ack는 바이트 단위당 1씩 늘어간다. head len(head length) : 디폴트 헤드 20바이트 + option의 길이를 확인. option의 존재 유무 파악 U..
a. 신뢰성있는 데이터 전송의 원칙 패켓에 있는 헤더의 특정 정보를 해석을 통해 정보가 제대로 왔는지 확인한다. 먼저 어플리케이션 계층에서 수송계층의 RDT의 rdt_send()를 요청하면 RDT에서는 정보를 패캣으로 나눠 담고 이를 네트워크 계층의 unreliable channel에게 udt_send() 요청을 하게 된다. 네트워크를 거쳐 정보가 수송계층에 도착하게 되면 rdt_rcv()요청이 이뤄지고, 패캣의 헤더 부분을 실행하고 문제가 없으면 데이터만 꺼내서 deliver_data()요청으로 어플리케이션에게 전달한다. b. FSM (Finite State Machines)로 rdt 프로토콜 기술 state : 프로그램이 실행되는 단계 화살표 : 프로그램의 상태 변화 event : 언제 상태변화가 이..
a. 수송 계층 ex. TCI, UDP 일반적으로 교환 노드에는 존재하지 않음.(방화벽 같은 예외가 있다.) 엔드 시스템에만 존재 보낼 때 조각으로 나눠서 각 조각마다 헤더를 붙여서 보낸다. 받을 때는 순서대로 받지는 않는다. 받는 쪽이 수송 계층을 통해 순서를 파악한다. b. 수송 계층 vs 네트워크 계층 네트워크 계층 : 어떤 경로로 메시지를 전달할 것인가 수송 계층 : 도착한 메시지를 어떤 프로세스로 처리할 것인가. (프로세스들은 포트번호로 구분한다.) c. 인터넷 수송 계층 프로토콜 순서대로 전달, 높은 신뢰성(오류 제어)(TCP) -순서 없이 오거나, 잘못된 메시지가 오거나(비트오류), -아예 도중에 메시지가 잃어버리거나, 같은 메시지를 여러번 받거나... =>TCP는 이를 해결할 능력이 있음...
a. DASH (Dynamic, Adaptive, Streaming over HTTP) 서버에서는 비디오 파일을 여러개의 청크로 나누고 청크들을 여러 방법으로 인코딩하고 저장 manifest file : 다양하게 저장된 청크들이 어디에 저장됐는지(URL) 알려주는 파일 클라이언트에서는 서버-클라이언트 대역폭(다운로드 속도)을 측정해서 속도에 따라 manifest가 적당하게 인코딩된 청크 위치a. DASH (Dynamic, Adaptive, Streaming over HTTP) 서버에서는 비디오 파일을 여러개의 청크로 나누고 청크들을 여러 방법으로 인코딩하고 저장 manifest file : 다양하게 저장된 청크들이 어디에 저장됐는지(URL) 알려주는 파일 클라이언트에서는 서버-클라이언트 대역폭(다운로드 ..
a. pure P2P 구조 -항상 켜져있는 서버가 존재하지 않음 -end system 끼리 직접 통신하게 된다. -이 end system을 peer라고 부른다. -한 서버가 여러 end system에게 전송하는 거 보다 end system끼리 자료를 주고 받게 하는 P2P가 더 확장성이 있음. b. Bit-torrent 파일을 256kb의 청크로 나눠 peer들 끼리 청크를 주고 받는 형식 traker는 피어들이 누구인지, 누가 참여하고 있는지를 추적하는 장치. 만약 새로운 피어가 들어왔을 때 이 피어는 트래커를 통해 어떤 피어와 연결해야하는지를 알 수 있다. 청크는 내 이웃 피어들에게서 가져오는데, 이때 청크는 가능한 희귀한(피어들이 덜 가지고 있는) 청크를 가져온다. 청크를 보내는 기준은 나에게 많은..
a. DNS : domain name system 각각의 노드들을 식별하기 위한 id가 필요하다. 대표적인 예시로 ip 주소(32비트)를 활용한다. www.something...com이라는 는 주소로 들어갈 경우 DNS가 이 도메인주소를 ip주소로 변환하여 컴퓨터들이 인식할 수 있게한다. 분산데이터 : 계층적인 구조를 갖는 네임서버들 어플리케이션 계층 프로토콜 : UDP를 사용 b. DNS : services host aliasing : 실제 이름을 줄여서 사용할 수 있게 해준다. 예를 들어 www.abcd.ef...com을 www.abcd.com 으로도 접속 가능하게 지원한다. mail server aliasing : 메일서버도 별명을 활용할 수 있다. load distribution : 하나의 웹서버..
a. 쿠키 User-server state : cookies 서버가 유저의 상태를 기억하기 위한 쿠키(주문내역 등) 맨 처음 유저가 브라우저로 사이트를 방문할 경우 생성 이후 해당 브라우저로 사이트 방문시 쿠키를 통해 특정 액션을 취함. b. 쿠키의 네가지 구성요소 1. HTTP 응답메시지에 있는 쿠키 헤더라인 2. 다음 HTTP 요청 메시지에 있는 쿠키 헤더라인 3. 사용자의 브라우저가 관리하는 쿠키파일 4. 웹사이트의 백엔드 데이터베이스 하지만 보안 상의 위험이 존재. c. 웹 캐쉬(프록시 서버) 목적 : 클라이언트의 요구가 근본 서버에 관여하지 않고 안정화하자. (origin server가 클라이언트와 거리가 멀 경우..) 프록시 서버(캐쉬)에 주변 클라이언트가 자주 사용하는 데이터를 저장해놓음 만..
a. 어플리케이션 프로토콜의 역할 헤더의 메시지 타입 정의(request인지 response인지) 메시지의 어디까지를 헤더로 하고 어디까지를 페이로드로 정할지.(필드 지정) 메시지의 정의(100110를 request로 정의하자..) 언제 어떻게 메시지를 보내고 답변하는 규칙 수립 b. 어플리케이션 프로토콜의 종류 오픈 프로토콜 : RFC에 정의된 프로토콜, 상호연동성 확보, ex.http, smtp 사설 프로토콜 : 서비스만하고 프로토콜은 공개하지 않는 경우 ex.스카이프... c. 어플리케이션이 필요로 하는 요소 1. data integrity : 정확한 메시지 전달해야 하는지, 그 정도는 아닌지를 파악 2. timing : 딜레이가 낮은 것이 중요한지(실시간 게임) 3. throughput(bps) ..
a. 네트워킹 어플리케이션 제작 서로 다른 엔드시스템에서 네트워크를 통해 소통하며 작동한다. 일반적으로 네트워크에 대해 몰라도 어플리케이션 제작 가능 b. 클라이언트-서버 구조 서버 : 항상 연결, 영구적 IP주소, 더 많은 양을 처리하기 위해선 데이터 센터 구비 클라이언트 : 간헐적으로 연결, 다이나믹 IP주소 사용(위치에 따라 변경), 직접 통신하진 않음. 통신의 시작 c. P2P(peer to peer) 구조 항상 연결된 서버가 없는 구조. 엔드시스템끼리 직접 통신 가능 자가확장성(self-scalability) : 더 많은 peer가 참여하면 처리 능력도 높아진다. peer들이 연결됐다가 해제됐다가 빈번. 관리 어렵고 IP주소가 자주 바뀜 d. 프로세스 어플리케이션 프로그램이 호스트에서 실행되는 ..
a. 프로토콜 레이어 각 레이어는 순차적으로 서비스를 진행. 보내는 쪽에서는 상위-하위 계층 순, 받는 쪽에서는 하위-상위 순으로 진행된다. 상위 계층은 하위 계층에게 서비스를 요청, 하위 계층은 상위 계층에게 서비스 제공. 이때 보내는 쪽과 받는 쪽이 같은 계층에 위치한 레이어끼리는 peer라고 부른다. 각 peer끼리는 헤더와 페이로드를 공유. 헤더에는 송수신지의 내용이 담겨있음. b. 왜 레이어링을 사용하는가 복잡한 시스템을 유지보수하기 유리함. 한 레이어를 바꾼다고 해도, 다른 레이어에는 큰 영향을 안줌. 레이어링은 계층들이 가장 근접한 계층들끼리 서비스를 요청하고 제공하는 시스템인데, 최근 들어 몇몇 계층을 생략하고 서비스를 요청하고 제공하는 시스템을 구축하기도.(크로스 레이어, 기존의 레이어링..