목록Computer Science (63)
가자미의 개발이야기
a. 라우터 라우터를 간단하게 도식화한 그림이다. 녹색, 청색, 적색 네모가 묶인 것을 네트워크 인터페이스라고 부른다. 들어오는 통로를 input ports, 나가는 통로를 output ports라고 부른다. 라우팅 프로세서에 의해 스위칭패브릭이 아웃풋 포트를 지정해 보낸다.(포워딩) b. input port fucntions line termination : 라우터의 물리 계층. 전자기 신호를 비트로 바꿔주는 역할 data link layer : 데이터들을 모아 한 프레임으로 만듬(프레이밍), 그 외에도 많은 역할.(이더넷도 여기에 포함) ip (빨간색 박스) : lookup, (포워딩 테이블을 보고 포워딩 해야할 곳을 찾는 행위), forwarding, queueing(보낼 정보들을 저장.) *이때 ..
a. 네트워크 계층의 목적. 세그먼트를 받아서 데이터그램으로 만들고, 각 라우터들이 헤더필드를 검사하여 알맞은 곳으로 데이터를 전달. forwarding : 라우터의 입력부터 출력까지 필요한 기능들 routing: 소스로부터 목적지까지의 경로를 결정(routing algorithms) b. Data Plane과 control plane data plane : 라우터가 자신이 가진 정보(routing table, forwarding table)를 활용해 경로 결정하는 기능(routing, forwarding) control plane : 소스-목적지에서 어떤 라우터를 만나게 할 것인가를 결정.(traditional routing algorithms과 software defined networking(sdn..
a. 혼잡 혼잡의 원인 : 라우터에 들어오는 양이 처리량보다 더 커서. 딜레이가 길어지고, 패켓을 잃을 수 있음. 라우터의 버퍼가 무제한이라고 가정하면. 데이터 전송이 계속 커질 수록, 데이터 전송 능력(throughput)능력은 같이 오르다가 한계 이후는 정체된다. 하지만 현실엔 다름(라우터 버퍼가 유한함) 실제로 유효하게 받은 데이터 처리량을 goodput이라고 한다. 혼잡이 발생하면 라우터에서 로스가 발생-수신자가 재전송-이럴 경우 재전송 데이터는 goodput에는 포함되지 않음. 즉 혼잡이 발생하면 goodput과 throughput이 차이가 나게 된다! 여러 센더가 라우터들을 공유하면서 정보를 전송할 때 g호스트 D가 B를 향해 데이터를 주고, A가 C를 향해 데이터를 전송한다고 가정. 이때 R..
a. TCP의 rdt(신뢰성 있는 데이터 전송) TCP는 ip의 위에서 rdt 서비스를 제공한다.(ip는 신뢰성 없음) -pipelined 방식 사용(gbn selective 선택 사용) -cumulative ack(누적 ack 방식 사용) -보냈는데 ack를 받지 못한 패캣에 해당하는 타이머 하나를 운용 b. TCP sender 초기에 NextSeqNum과 SendBase를 초기화. 상위 계층이 데이터 전송을 요구할 때, nextseqnum에 해당 되는 데이터를 세그먼트 생성하고, nextseqnum을 생성된 데이터 만큼 뒤로 보내고 타이머 실행. 타이머가 다 되면, 보냈는데 ack를 못받은 데이터 중 시퀀스 넘버가 가장 작은 놈을 다시 보내고 타이머 재시작. ack를 받으면 sendbase를 ack까..
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 : 하나의 웹서버..