분류 전체보기

지금까지 TCP/IP의 3가지 계층을 살펴봤고, 이번에는 Link Layer를 알아볼 차례이다. 호스트와 라우터들은 노드 형태로 되어있고 이 노드들은 유선, 무선, LAN 방식의 링크로 연결되어 있다. 링크 계층에서는 링크를 통해 노드에서 물리적으로 가까운 거리까지 데이터그램을 전달하는 일을 담당한다. 즉, 이 계층의 가장 큰 목표는 에러 없이 링크를 통해 송수신하는 일이다. 이를 위해서 먼저 framing이라는 과정을 거친다. 데이터그램에 헤더와 트레일러를 붙이고 사용할 채널에 접근한다. 이러한 인접 노드에 신뢰성 있는 전송을 제공하기 위해 흐름 제어, 에러 탐지, 에러 정정, half duplex 혹은 full duplex 서비스를 제공한다. 참고로 링크 계층은 NIC라는 네트워크 인터페이스 카드에서..
ICMP(Internet Control Message Protocol)앞서 IPv6의 데이터그램 포맷을 살펴볼때, Fragmentation offset/flags/Identifier 필드가 없다고 언급했었다. 이는 fragmentation이 송신 과정에서 발생하지 않고 출발지, 목적지에서만 분할. 재조합이 이루어진다고 했다. 만약에 라우터를 지나는데 MTU에 비해 데이터 길이가 긴 경우에는 분할하지 않고 버리고 ICMP를 통해 오류 메세지를 보낸다. ICMP는 에러 메세지 전달만을 위한 것은 아니다. 예를 들어서, 목적지 네트워크까지 도달하지 못한 경우, ping 프로그램을 통한 echo request, TTL이 만료된 경우에 사용한다. 대표적으로, Traceroute 프로그램은 일부러 사용하지 않는 p..
앞선 글에서는 routing protocol 두 가지를 배웠다. link state는 dijkstra 방식을 사용해서 네트워크에 속해있는 라우터의 정보를 모두 알고있는 상태에서 최적의 경로를 설정한다. distance vector는 bellman ford 방식을 사용해 인접 라우터로부터 오는 정보를 비교하여 업데이트하는 방식이다. 이 때, 링크 정보가 더 나빠졌는데도 인지하지 못하고 무한정으로 반복하게 되는 문제(count-to-infinity)가 발생할 수 있다.  그러나 네트워크에 존재하는 모든 라우터들이 각각의 라우터 정보를 다 가지고 있을 수는 없다. 또한 인터넷은 ISP들의 네트워크이고 ISP들이 네트워크를 관리하기 때문에 어떤 프로토콜을 사용할 수 있어야 한다. 그래서 AS(Autonomous..
지금까지는 네트워크 계층의 Data Plane을 학습했다. Data plane은 forwarding을 수행하며 forwarding table을 통해 input port에서 들어온 패킷을 어떤 output port로 내보낼지를 결정하는 일을 한다. 이와 함께 라우터의 구조를 학습했다. 앞선 글에서도 언급했지만 Control Plane은 routing algorithm을 통해 routing table을 만드는 역할을 한다. 출발지부터 도착지까지 어떤 경로로 가야할 지를 결정해주는 routing protocol에 대해 학습해보자. Routing Protocols라우팅 프로토콜의 최종 목표는 출발지에서 목적지까지의 최적의 경로를 결정하는 일이다. 최적인 경로를 결정하는 데에는 비용이 될 수 있고 속도가 될 수 ..
Network Layer : Internet지금까지 네트워크 계층의 Data plane과 Control Plane에 대해 학습했다.IP Datagram FormatIPv4 패킷의 내부 구조를 알아보자.VerIP 프로토콜의 버전이 저장된 필드이다. IPv4이기 때문에 4가 들어가 있다. Head Len헤더 길이를 byte단위로 저장한 필드다. 옵션 길이에 따라 헤더 길이가 달라지기 때문에 가변 길이다. 대부분의 IPv4 데이터그램의 헤더는 20byte이다. Type of Service각 패킷마다 제공하는 서비스를 저장한 필드다. 예를 들어서 실시간 데이터 그램과 비실시간 트래픽 등을 저장한다. 0~5까지는 diffserv, 6~7은 ECN을 나타낸다. Length헤더와 payload를 총 합친 길이를 저장..
· 협업/git
우리는 github를 통해서 협업을 하고 작업한 내용에 대한 commit message를 남긴다.이때, 협업 시 좋은 commit message가 무엇인지 알아보았다. 1. commit message가 왜 중요한가코드 리뷰 시간을 단축하여 능률적으로 처리할 수 있다.변경 사항을 이해하는 데 시간을 단축할 수 있다.코드만으로 설명하기 어려운 "왜 이렇게 구현했을까?"를 설명할 수 있다 2. 좋은 commit message 작성하기1️⃣ 명령조좋은 예Use InventoryBackendPool to retrieve inventory backend 나쁜 예Used InventoryBackendPool to retrieve inventory backend 왜 명령조를 사용할까? commit message는 변경..
카카오테크캠퍼스 과제를 수행하던 중 새로고침 시 값이 변경되지 않도록 하는 방법이 궁금해 찾아보았다. 기존 코드const [todos, setTodos] = useState([])const [filter, setFilter] = useState('all')... {todos.length > 0 && ( )}  기존코드는 사용자로부터 TodoInput을 받아와서 addTodo 함수를 통해서 새로운 리스트를 형성한다.  이 로직은 addTodo 함수를 통해 input으로 받은 값을 띄우는 것일 뿐이다.그래서 브라우저의 local storage 영역에 들어가면 아무런 값이 저장되어 있지 않다.그래..
event.preventDefault()가 뭐지 a 태그나 submit 태그는 누르게 되면 href를 통해 이동하거나 창이 새로고침이 되는데, 이때 preventDefault를 사용해서 동작을 멈출 수 있다. const checkbox = document.querySelector("#id-checkbox");checkbox.addEventListener("click", checkboxClick, false);function checkboxClick(event) { let warn = "preventDefault() won't let you check this!"; document.getElementById("output-box").innerHTML += warn; event.preventDefaul..
Network LayerServices and Protocol네트워크 계층은 근본적으로 송신 호스트에서 수신 호스트로 패킷을 전달하는 것이다.sender : 세그먼트를 데이터 그램으로 encapsulate 한 다음 링크 계층으로 전달receiver : 헤더에 쓰인 주소를 읽어들이고 전송 계층으로 전달 이러한 일을 위해서 네트워크 계층에는 2가지 기능을 정의하고 있다. 먼저 Forwarding은 라우터의 input link로 들어온 패킷을 어떤 output link로 내보낼지 결정하는 과정이다. routing은 패킷에 명시된 목적지 주소까지 경로를 결정하는 과정이다. 그래서 라우터는 목적지를 결정하는 테이블인 forwarding Table을 가지고 있어서 이것을 참고해서 패킷을 어디로 전달할지 결정한다. ..
전송 계층 서비스 전송 계층은 애플리케이션 계층에서 온 메세지를 세그먼트 단위로 쪼개고 이를 네트워크 계층으로 전달하는 역할을 한다. 논리적 연결을 통한 end-to-end 연결이라 할 수 있다. 송신자는 애플리케이션 메세지를 세그먼트로 쪼개고, 수신자는 세그먼트를 메세지로 조합해서 애플리케이션으로 전송한다. 이러한 일을 가능하게 하는 것이 TCP, UDP 프로토콜이다. 애플리케이션에서 요구하는 서비스 형태에 맞춰서 TCP 통신을 할 것인지, UDP 통신을 할 것인지를 결정한다. 네트워크 계층은 host와 연결한다면, 전송 계층은 process 간의 연결을 제공한다. 전송 계층의 역할 송신자 : 애플리케이션 메세지를 받고 세그먼트로 분해한다. 거기에 protocol control 정보를 담은 헤더를 붙여..
소-은
'분류 전체보기' 카테고리의 글 목록 (2 Page)