오늘 한 일.
프로그래머스 4문제 풀이
네트워크 링킹 계층의 무선 네트워크
새로 배운 것.
- String의 split(separator: ) or split { $0 == "" }의 리턴 타입은 [SubString]이며, split은 Foundation을 import 하지 않아도 사용이 가능하다.
- String의 components(separatedBy: "")의 리턴 타입은 [String]이며, Foundation이 필요하다.
- 무선 네트워크가 유선 네트워크와 다른 점은 같은 호스트를 가져도 특정 호스트는
Carrier Sense
를 할 수 없는 상황이 있다(거리에 따른 세기의 감소) 따라서 Collision Detect
가 불가능하다!
그래서 나온 것이 상대방(AP)에게 ACK를 받아 해결하는 CSMA/CA(Collision Avoidance)
방식!
그런데 이 방식은 CSMA/CD에서 Collision Detect 하는 순간, 전송을 멈추고 Binary Backoff를 바로 수행하는 것과는 다르게, 한 번 보내면 끝까지 프레임을 보내게 된다. 그래서 CSMA/CD보다 낭비되는 자원이 많다.
그래서 CSMA/CA에서는 RTS-CTS(Ready To Send, Clear To Send)
라는 Control Frame을 추가시켜 Collision을 줄인다. 두 프레임 모두 브로드 캐스팅 방식이다. 만약 CSMA/CA에서 데이터 재전송을 7번까지 했는데 ACK를 받지 못했다면 해당 frame은 포기하고, end-to-end 통신인 TCP의 Timer에 의해 TimeOut 되어 재전송하게 된다.
내일 일정.
프로그래머스 알고리즘 4문제 이상 풀기
네트워크 좀 더 딥하게 공부
오늘 느낀 점.
오늘 5문제를 도전했지만 한문제는 실패다.. 캐시 문제였는데 다시 풀어봐야겠다.