[우아한테크코스] 7월 13일 TIL
[Java] dto 값 비교하기
동등성 비교 시 usingRecursiveComparison()
을 적용한다.
필드값 비교를 통해 중첩된 객체까지 들어가서 값을 비교한다.
ignoringFields()
하면 특정 필드를 무시할 수 있고,
ignoringActualNullFields()
, ignoringExpectedNullFields()
로 null field도 분류할 수 있다.
assertThat(actualResponse).usingRecursiveComparison()
.ignoringCollectionOrder()
.ignoringExpectedNullFields()
.isEqualTo(expectedResponse);
[Network] Network Access Layer
물리적인 주소로 MAC 주소를 사용한다.
송신 전이나 수신 후에 바르게 데이터를 송수신하는 순서를 정의한다. 세그먼트 범위(허브에 연결되어 있는 범위, 라우터 사이) 내에서 송수신을 관리한다.
이더넷: LAN의 표준 프로토콜로 주소를 통해 자신과 데이터를 보내는 상대의 위치를 정한다.
허브
여러 케이블을 연결해 네트워크를 구축함과 동시에 신호의 증폭과 재생 담당
케이블이 분배되는 효과
flooding
허브가 연결된 기기에게 신호를 송신하는 방법으로 수신 포트 이외에 모든 포트에 신호를 송신하는 것
세그먼트 범위 내 모든 기기에 데이터 전송, 특정 기기는 자신과 관련 없는 데이터를 받는 경우도 발생
이더넷에서 MAC 주소를 보고 자신에게 오지 않은 프레임 파기(멀티캐스트는 그룹 번호 다르면 파기)
충돌
인접한 두 개 이상의 허브가 동시에 플러딩하면 발생하는 것
- 충돌 도메인
충돌이 발생할 수 있는 범위
Carrier Sense Multiple Access/Collision Detection
허브에서 동시 플러딩으로 인해 충돌이 발생한 경우 제어하는 것
- Carrier Sense
사용하려는 통신 매체가 사용중인지 검사 - Multiple Access
사용 중이면 대기, 사용하지 않고 있으면 전송 - Collision Detection
데이터 전송 후 충돌 여부 확인(ACK)
충돌이 발생하면 임의의 시간동안 대기(backoff)한 후 재전송
backoff를 통해 시간적으로 대기하여 네트워크 제어 권한이 CPU에 있는 것이 아니라 네트워크에 연결된 모든 노드들에 분산되어 이루어지는 것을 알 수 있음
스위치
허브에서 CSMA/CD를 사용하면 효율이 좋지 않아 나온 것
신호가 지나가는 길을 나누어 신호가 들어오면 그 길에 따라 전송되도록 함
MAC 주소 테이블
스위치나 브릿지에 연결된 사용자들이 맥 주소를 저장한 것
데이터가 스위치를 거치는 순간 자동으로 스위치의 맥 주소 테이블에 등록된다.
- 학습
수신한 프레임의 송신처 MAC 주소를 기록해 수신한 포트와 MAC 주소(ARP를 통해 알아냄)를 연관 짓는다.
포트에 연결되어 있는 컴퓨터의 MAC 주소를 기억해 table에 기록한다. - 포워딩/필터링/플러딩
- 포워딩: 스위치 포트로 수신한 프레임의 송신처 MAC 주소가 자신의 table에 학습되어 있으면 그 포트로만 전송
- 필터링: 포워딩 포트 외에 다른 포트에 가지 못하도록 함, 학습되지 않은 프레임은 플러딩함 => 충돌 제거 가능
- 에이징: table을 관리하기 위해 일정 시간 후에 저장된 주소 삭제
버퍼링
수신처가 같은 프레임이 동시에 스위치에 도달했을 때 충돌을 일으키지 않는 방법
충돌할 것 같은 프레임을 버퍼에 저장해두고 송신이 끝나면 버퍼에 있던 프레임 송신
버퍼 꽉 차면 Back Pressure를 통해 조정
전이중 반이중 통신
전이중
두 개의 통신 장치가 동시에 통신이 가능한 방식
데이터를 송신함과 동신에 수신할 수 있다.
전송 효율이 우수해 전송 데이터가 많을 때 용이하다.
ex) 전화기, 스위치
반이중
두 개의 통신 장치가 각각으로 한쪽 방향으로만 통신할 수 있는 방식
수신하면서 송신할 수는 없다.
전송 방향을 바꾸기 위한 시간이 필요해 데이터가 적을 때 용이
ex) 무전기, 허브의 CSMA/CD
Question
- 100Mbps 전이중을 10Mbps 전이중으로 변경하면 포트가 다운된다. 10Mbps는 반이중이어야 하는 이유?
100Mbps 전이중이면 한쪽이 고정되고 다른 쪽이 100Mbps 전이중이거나 자동일 경우일 때는 반이중 모드로 인식된다.