본문 바로가기

CS/컴퓨터 네트워크

(19)
15. reliable data transfer 원리 : RDT(1.0, 2.0, 2.1, 2.2, 3.0) tcp의 안정적 데이터 전송 application layer에서 sender에서 데이터를 보내고 transport layer에서 tcp를 제공하고 receiver에 도착함 보내는 과정의 함수가 있을 텐데 여기는 unreliable함 이 unreliable한 곳을 뚫고 가면 receiver의 transport layer에서 reliable하게 함 * RDT : reliable data transfer protocol 방향성이 한쪽으로 가는 거라서 unidirectional 보통 FSM을 사용하게 됨 FSM은 finite state machines인데 유한상태머신임 머신이 하나의 상태에서 다음 상태로 넘어갈 때 이벤트가 있고, 액션이 있음 어떤 이벤트가 state1에서 발생하고 state2로 넘어갈 때, 그..
14. Connectionless transport : UDP UDP : user datagram protocol - RFC768에 잘 정의되어 있음 그냥 순수한 주소만 보고 전달하는 프로토콜 이름은 멋지지만 무책임함 best effort 중간에 패킷 손실 손상우려 있음 잃어버린 건 어쩔 수 없지만 순서가 뒤바껴서 오면 문제가 됨 순서를 재조합해야하거나 버려야하는데 application layer에서 처리하는 게 큰 부담이 될 수 있음 udp 는 주로 데이터 손실이 조금 있어도 되는 스트리밍 어플에서 많이 사용 DNS관련 데이터 베이스 업데이트 할때도 사용함 - 인터넷에 큰 무리가 안돼서 그렇다고 함 SNMP는 몇개의 패킷이 네트워크에 오갔는지 모니터링 하는 건데 udp 사용함 udp의 속도는 즐기고 싶지만 reliable하게 하고 싶으면 application la..
12. 트랜스포트 레이어 트랜스포트 레이어는 서로 다른 호스트에서 수행 중인 프로세스들 간의 logical 한 통신을 지원함 각 운영체제 상위에서 동작하는 어플리케이션의 프로세스들 사이에서의 통신 physical은 직접적으로 연결을 하고 데이터를 물리적으로 주고 받는 건데 트랜스포트 레이어는 프로세스가 인터넷 어딘가에 존재하는 프로세스와 하는 그냥 논리적인 통신을 함 transport protocol 통신 시 만약 보내는 쪽에서 보내려는 데이터가 100MB이고 이를 256kB씩 끊어서 보내려고 할 때 이 끊어놓은 단위를 segment라고 함. (transport layer에서는 segment, network layer에서는 packet, linked layer에서는 frame이라는 용어 사용) transport layer 내가 ..
11. P2P * P2P 아키텍처 - no always on server 서버가 항상 켜져있지 않아도 됨 - 토렌트, 스카이프가 대표적 예시 * BitTorrent - 256kB 청크 사이즈로 주고받음 - 내가 원하는 파일을 요구하면 거기에 관련된 청크를 주고받음 - 그 파일 관련 청크를 가진 사람과 주고받음 - 내가 가진 청크를 누군가가 필요로 하면 줌 - 피어들끼리 동등한 입장에서 데이터를 보내주고 요구함 - 이것들을 관리하는 것이 트래커 :: 청크에 대한 리스트를 갖고 있음
10. DNS * DNS domain name server - 디바이스가 인터넷에 연결할 때 ip로 위치를 찾아가는데, 그 ip의 호칭과 ip주소를 바인딩하는 역할 - distribute : 모든 ip와 dns의 바인딩을 기억하는 것이 아니라, 특정 지역의 특정 서버를 사용 - 어플리케이션 레이어 프로토콜. 서비스를 하지는 않고 어플리케이션도 아니지만 어플리케이션 레이어에 위치 - internet core function 같지만 어플리케이션 레이어에 구현되어있음 * centralize DNS 가 아닌 distribute DNS를 사용하는 이유 - centralize는 트래픽 양이 많고, 멀리 있으면 속도가 느림, 데이터베이스가 방대해서 유지보수가 어려움 - 확장성이 안좋아서 decentralize * 확장성 해결 방법..
9. SMTP, POP3, IMAP * 이메일 - 이메일에서 주요 컴포넌트 세가지 : user agents, mail servers, SMTP - user agent : mail reader 라고도 함, 메일 서버로부터 메일을 가져와서 읽고, 메일서버에 메일을 보내는 역할 - mail server : 메일을 주고받는 일을 담당하는 서버 - smtp - user agent에서 메일을 작성하고 메일 서버에 보내 놓으면 smtp 끼리 주고받고 다른 user agent가 메일이 온 것을 확인하고 받아서 읽음 * 메일 서버 - 메일 박스 - 도착한 메세지, 보내야하는 메세지가 큐에 있음 - 큐에 있는 것들이 하나씩 나가는데 이때 smtp 사용 - 이 메일 서버들이 메일을 주고 받는 거고 smtp라는 집배원을 통해 다른 우편함(메일서버)로 이동 - ..
8. FTP *FTP - file transfer protocol의 약자 - 붙어있지 않은 원격의 호스트끼리 주고받을 때 쓰는 프로토콜 - client-server 모델 사용 클라이언트 : 서버에 접속해서 커넥션을 만들고 필요한 파일을 다운로드함 서버 : remote host - RFC 959: 959번 할당해서 사람들이 업데이트하게 됨 - FTP 서버는 포트 21번을 사용 - 두개의 채널을 사용함 * separate control, data connections - 21번 포트로 tcp 사용해서 연결 시도 : 아이디, 비밀번호, 커넥션 관련 정보 - 20번 채널을 하나 더 만들어서 실제 파일을 주고 받음 - 두개의 채널 : out of band 하나의 밴드에서 시그널을 주고받고, 다른 밴드에서 데이터 통신이 일어남..
7. Web, HTTP * http 웹 페이지를 보내는 것 웹페이지의 object들 (텍스트, 오디오, 이미지 등)을 보냄 url : 호스트 ip와 폴더 이름, 파일 이름 모두 합쳐진 것 http는 링크가 있는 걸 주고받는 프로토콜 - 클라이언트 : 크롬, 익스플로러, 사파리 등에서 데이터를 요구하고 받아서 보여지는 형식 - 서버 : 웹서버 http 프로토콜로 요구하는 페이지를 클라이언트에게 전달하면서 동작 - http는 tcp를 사용, 80이나 8080을 사용 - stateless : 상태에 상관없이 클라이언트가 요구하는 페이지를 전달, 어떤 상황이든지 똑같은 페이지를 보여줌 * tcp 연결 지향형 - non persistent : object 마다 connection이 있음 rtt : 한번 갔다가 돌아오는데 걸리는 시간 t..