네트워크 관련 글 순서(참조 영상 기준)
애플리케이션 계층
- 네트워크 애플리케이션의 원리
- DNS
- TCP를 이용한 Socket 프로그래밍
전송계층
- 전송 계층 서비스의 원리
- rdt 원리
- 연결 지향 전송: TCP
- TCP 흐름 제어(3-way handshake, 4-way handshake)
- TCP 혼잡 제어
네트워크 계층
- 네트워크 계층 서비스
- Network Address Translation(NAT), DHCP
- 라우팅 알고리즘(Link State, Distance Vector)
- 계층적 경로 변경(AS)
링크 계층
- 다중 엑세스 프로토콜
- LANs(근거리 통신망)
무선 및 모바일 네트워크
- 무선 네트워크
웹 요청 시 일어나는일
네트워크 보안
- 대칭키 & 공개키,RSA 암호화
- Secure e-mail, SSL, MAC
- IPSec(ESP), Firewall(방화벽)
RDT란(Reliable Data Transfer) 1
신뢰성 있는 데이터 교환을 뜻함.
데이터가 오류나 누락없이 전송되는 것.
데이터 전송 중 생기는 문제
- 가는 도중에 에러가 발생
- 데이터 유실 발생
신뢰성이 있다는건 데이터가 유실하지않고 에러가 발생하지 않았다는 뜻
RDT 1.0
- RDT1.0은 전송과정이 완벽해서 에러나 유실이 되지 않는다고 생각한다.
- 송신
- 상위 레이어에서 데이터가 들어오면 rdt_send(data) 호출
- make_pkt(data)로 패킷 만듦
- udt_send(packet) 호출 패킷 전송
- 수신
- 하위 레이어에서 데이터를 받아오면 rdt_rcv(packet) 호출
- extract(packet,data) 호출로 패킷에서 데이터 추출
- deliver_data(data) 호출해서 상위 레이어로 데이터 전송
RDT 2.0
- RDT2.0은 유실은 안되지만 error가 발생 할 수 있다고 생각한다.
- 에러에 대한 detection과 피드백이 존재
- 받은 데이터에 대한 피드백을 함
- 정상: ACK 전송
- 에러: NAK 전송
- 2.0은 치명적인 결함이 있음
- 수신측에서 보낸 피드백이 에러가 발생하거나 손실되었을때, 송신측에선 NAK이라는 가정하에 다시 데이터를 재전송한다. 하지만 수신측에선 이게 다시 보낸건지 다음 순서의 데이터를 보낸건지 확인이 불가능함.
RDT 2.1
- RDT 2.0의 치명적인 결함을 제거
- 패킷마다 시퀀스 번호(0,1)를 붙여서 송신,수신함
- 0번 패킷을 보내고, 0 ACK or 0 NAK 피드백을 기다림
- 정상적으로 잘 받아서 0 ACK를 받았다면, 1번 패킷 전송
- 0 NAK이나 에러가 생겼다면, 0번 패킷 재전송
- 수신측에서 만약 이미 받았던 데이터인데 다시 받게 되는 경우라면 기존 데이터를 지우고 다시 받은 후 0 ACK로 잘 받았다고 다시 전송
시퀀스 번호를 2개만 쓰는 이유
더보기
헤더의 크기는 최소화(부가적인 정보이기때문에)할수록 좋은데,
시퀀스번호의 개수를 보낼때마다 증가하면서 보내면 커질 수 있다.
어차피 패킷의 보낸 데이터가 재전송된 데이터인지 다음 데이터인지 구분만 하면 되므로, 0과 1로 충분히 판별가능
RDT 2.2
- 위의 버전에서 NAK 없이 ACK로만 구현
- 에러가 있든 없든 ack로 보내는데 에러가 있으면 시퀀스번호를 다른 번호로 보냄(에러라는 표시)
RDT 3.0
- 데이터가 에러가 발생할 수도 있고 유실도 될 수 있는 상황
- 위의 RDT에서 필요했던 detection, feedback, sequence number에다가 timer가 추가됨
- 데이터를 보내고 일정시간(timer) 내에 피드백이 안오면 재전송
- 타이머를 빠르게하면 빠르게 조치할 수 있지만, 자원소모가 많음
- 타이머 느리면 느리게 조치됨.
d와 같은 상황을 개선한 pipelined protocol이 존재
Pipelined protocols
한꺼번에 보내고, 피드백을 한꺼번에 받아서 처리
뒤의 강의에서 어떤식으로 진행되는지 자세히 알려줌.
참조
KOCW 네트워크 강의 - 한양대 2018 1학기 이석복 교수님
- 신뢰성있는 [본문으로]
'CS > NetWork' 카테고리의 다른 글
[네트워크] TCP 흐름 제어, 3-way handshake, 4-way handshake (0) | 2022.01.18 |
---|---|
[네트워크] 연결 지향 전송(TCP) (0) | 2022.01.17 |
[네트워크] 전송 계층 서비스의 원리(TCP,UDP) (0) | 2022.01.13 |
Socket Programming(소켓 프로그래밍) (0) | 2022.01.12 |
DNS(Domain Name System) 뜻,구조 (1) | 2022.01.11 |
댓글