1. Internet vs internet의 차이

Internet은 internet의 포함된다.

Internet : 고유명사, TCP/IP로 운용되는 network of networks -> 가장 대표적으로 우리가 쓰고 있는 것.

ineternet: 일반적인 용어, network of networks, network들을 묶어서 만든 하나의 network, TCP/IP로 운용되지 않아도 상관없다.

 

2. Internet의 장치적 관점

  1. device == host == end systems : Internet edge 부분에서 앱을 구동하는게 목적
  2. Packet switches: 최대한 신속히 packet을 forwarding 하는 것.
    1. packet: message를 적절하게 나눠서 보내는 전송단위
    2. forwarding vs routing
      1. forwarding: 경로가 일치하도록 router to router, forwarding table을 활용해서 적절한 router의 위치로 이동(forwarding table은 routing algorithm을 통해 생성), 각 router마다 forwarding table을 가지고 있으며, line card마다 생성됨, router가 독자적으로 결정
      2. routing: source to dest까지의 경로 , 사실상 forwarding이 합쳐져서 routing을 만듦, global한 세팅으로 router들이 모두 일관(Consistent)되어야 한다.
    3. Ethernet switch: router에 traffic을 전달, router로부터 traffic을 전달 받음.
  3. Communication links(매체)- fiber, satellite, radio 대역폭은 전송효율과 비례
  4. Network : 1,2,3의 collections.

3. Internet의 software 관점

protocol: 규약, 명시 -> software나 펌웨어로 받음. ex) HTTP, OTT, Skype, TCP, IP, WIFI, 4G

 

4. Internet의 service관점

Internet은 Infrastructure api를 제공(application을 가능하게 해준다.)

 

5.  ISP(Internet Service Provider) - ex) skt, kt, lg

  1. ISPS - 다수의 ISP로 연결된 형태로 동작

6. Protocol - 규약, 형태 규정, 메시지 전송에 관해 취해야할 행동

 

7. host: client vs server => 역할 구분: 서비스를 제공 or 요청

 

8. Access network: host들이 정보를 주고받기 위해 가장 먼저 접근해야하는 장소(host 직접 연결x)

 

9. network core의 기능

수많은 ISP, access network의 연결, router들만 포함

  1. router : multiple LAN card, line card(보드) -> 각각의 특수한 일을 하는 컴퓨터(IP 여러 개)
  2. IP 주소는 컴퓨터에 연결된 네트워크 인터페이스 카드에 부여
  3. switch fabric: line card를 연결해주는 네트워크, 하나의 router에 들어 있음. -> 하나의 네트워크 장치에 있는 컴퓨터들을 연결해주는 network

이진 탐색(Binary_search): 배열 내부의 데이터가 정렬되어 있을 경우, 시작점, 끝점, 중간점 필요

찾으려는 데이터와 중간점(middle)위치에 있는 데이터를 반복적으로 비교

시간복잡도: O(logN)

1) 재귀 함수 이용

def binary_search(array, target, start, end):
if start > end:
return None
mid = (start + end) // 2
# 찾은 경우 중간점 인덱스 반환
if array[mid] == target:
return mid
# 중간점의 값보다 찾고자 하는 값이 적은 경우 왼쪽 확인
elif array[mid] > target:
return binary_search(array, target, start, mid-1)
# 중간점의 값보다 찾고자 하는 값이 큰 경우 오른쪽 확인
else:
return binary_search(array, target, mid + 1, end)

2) 반복문을 이용
def binary_search(array, target, start, end):
while start <= end:
mid = (start + end) // 2
# 찾은 경우 중간점 인덱스 반환
if array[mid] == target:
return mid
# 중간점의 값보다 찾고자 하는 값이 적은 경우 왼쪽 확인
elif array[mid] > target:
end = mid - 1
# 중간점의 값보다 찾고자 하는 값이 큰 경우 오른쪽 확인
else:
start = mid + 1

'알고리즘' 카테고리의 다른 글

백준[15663번] N과 M(9)  (2) 2023.10.31
백준[2133번] 타일 채우기  (0) 2023.10.30
백준[3197번] 백조와 호수  (0) 2023.09.19
백준[1655번] 가운데를 말해요  (0) 2023.09.19
백준 14889번 스타트와 링크  (0) 2023.09.07

+ Recent posts