전체 글 527

응용계층

응용계층 역할 응용 계층은 OSI 7계층에서 가장 최상위 계층에 속하며 여기서는 응용계층, 표현 계층, 세션 계층을 포함하여 응용 계층이라고 통용 하겠습니다. DHCP, DNS, HTTP, SMTP, POP3, IMAP, SNMP, FTP등이 있습니다. 각각 HTTP는 웹사이트 접속을 DNS는 주소 해석, FTP는 파일 전송, SMTP는 메일 송신, POP3는 메일을 수신하는데 이용합니다. 컴퓨터를 이용하는 사용자라면 여러가지 서비스를 이용하고 싶어합니다. 여기서 서비스를 요청하는 측을 클라이언트라고 부르고 서버를 제공하는 측을 서버라고 가정해보면 클라이언트는 여러 서비스를 사용하고 싶어하는데 그 예로 브라우저를 접속하고 싶어하거나 파일을 전송하고 싶다거나 메일을 전송하고 싶어하는 등이 있습니다. 이럴 ..

[log & reflog] 이전 commit 내역들과 변경사항을 확인하고 싶어요

git log 커밋 내역을 확인하는 가장 일반적인 방법은 git log명령어를 입력하는 것입니다. $ git log commit c008c4785eeb14a395b4aa6cf9fa3b9e5896f5a4 (HEAD -> main) Author: grab Date: Tue Aug 17 21:21:45 2021 +0900 a 파일을 수정한다 commit b014111c82fa239b771b2b6d6bdc567282e7b325 Author: grab Date: Tue Aug 17 20:34:32 2021 +0900 a 파일을 추가한다 --oneline 으로 간략하게 볼 수도 있습니다. $ git log --oneline c008c47 (HEAD -> main) a 파일을 수정한다 b014111 a 파일을 추가한..

Git 2022.05.19

3-way handshake, 4-way handshake

TCP 통신 과정에서 데이터를 전송하기 위해서는 먼저 '연결'상태, 가상의 통신로를 확보해야합니다. 그 가상의 통신로를 확보하기 위해 3-way handshake를 거치게 됩니다. 이 때 TCP플랫그(코드 비트)가 중요한 역할을 합니다. 코드비트에는 URG, ACK, PSH, RST, SYN, FIN이렇게 6가지로 나누어집니다. 3-way handshake(연결을 확립할 때) (1) 통신을 하기 위해 통신을 하기 위한 연결을 확링해달라고 요청(SYN)을 합니다. 이때 SYN이 1로 바뀌면서 세그먼트를 전송 (2) 응답을 회신하기 위해 응답(ACK)를 보냅니다. 동시에 서버도 클라이언트에게 데이터 전송에 대한 허가를 받기 위한 연결을 확립해달라고 SYN을 보냅니다. ACK, SYN이 1로 활성화된 세그먼트..

브랜치

브랜치를 이용한 작업 흐름 git switch -c 명령어로 우리가 사용할 브랜치를 만듭니다. 우리는 유저 관련 기능을 개발하기로 했으므로, 브랜치 이름도 users 라고 짓겠습니다. # 현재 브랜치(main)에서 users 라는 새로운 브랜치를 만듭니다. $ git switch -c users # 위 명령어는 사실 git switch -c users main와 동일합니다. # git switch -c {새로운 브랜치 이름} {기준 브랜치} 이 명령어 포맷입니다. # 뒤에 {기준 브랜치}는 생략 가능하며, 생략할 시 현재 브랜치를 기준으로 새로운 브랜치가 만들어집니다. 이 명령어의 실행 결과로 우리는 기존의 메인 브랜치인 main 브랜치에서 users 로 바꾸었습니다. 이제 users 브랜치는 main ..

Git 2022.05.18

작업 공간

Git에는 크게 4가지 작업 공간이 있습니다. Workspace 개발자가 작업하는 일반적인 공간입니다. git add 명령러 이전에는 변경 사항들은 workspace에 기록됩니다. index 변경된 모든 파일 및 폴더들을 추적하는 공간입니다. staging Area라고도 이야기 합니다. git add 명령어로 workspace 공간에 작업물들을 이 공간으로 보낼 수 있습니다. 우리가 관심 있고 최종적으로 커밋하고자 하는 작업물들을 이 공간으로 두면 됩니다. 한 번 index에 올라갔던 파일들은 git에서 계속해서 추적합니다. local repository - 최종적으로 커밋된 작업물들이 놓이게 되는 공간입니다. - git commit 명령어로 index에 있는 파일들을 이 공간으로 보낼 수 있습니다. -..

Git 2022.05.18

TCP세그먼트 TCP 헤더

응용 계층의 데이터에서 TCP헤더를 붙여 캡슐화하면 TCP 세그먼트가 됩니다. 전송 계층 통신 방식 연결형 통신: 데이터를 전송하는 과정에서 연결을 확립하는 연결형 통신을 합니다. 비연결형 통신: 데이터를 전송하는 과정에서 효율성(빠르게, 일방적인 통신) 중요시 하는 통신 TCP세그먼트, TCP 헤더 출발지 포트 번호(16비트) 목적지 포트 번호(16비트) 일련번호(32비트) 확인 응답 번호(32비트) 헤더 길이 예약 영역 TCP 플래그(코드 비트) 윈도우 크기 체크섬 긴급 포인터 TCP 옵션 일련번호(32비트): 송신자가 지정하는 순서 번호, (ex: 100이라는 번호를 가진 데이터를 전송한 다음에는 101번 데이터를 전송합니다.) 이와 같이 데이터를 송신할 때마다 고유한 번호를 부여해서 전송을 시도하..

Socket.io와 Webksocket의 차이

Socket Server 와 Client 가 특정 Port 를 통해 실시간으로 양방향 통신을 하는 방식 - Socket 연결은 TCP/IP 프로토콜을 기반으로 맺어진 네트워크 연결 방식이다 - 이러한 Socket 연결 방식으로 프로그래밍을 하는 것을 소켓(Socket) 프로그래밍이라고 하며, Socket 프로그래밍은 Server 와 Client 가 특정 Port 를 통해 연결을 유지하고 있어 실시간으로 양방향 통신을 할 수 있는 방식이다 - 계속 연결을 유지하는 연결지향형 방식이기 때문에 실시간 통신이 필요한 경우에 자주 사용됩니다 (채팅 등..) - 실시간 동영상 (스트리밍)은 스트리밍하는 사람이 방송을 종료할 때 까지 서버에 요청을 해야하는 데 이러한 구조는 서버 부하게 걸리게 된다. 따라서 계속 요..

변수명 지어주는 사이트

코딩할 때 가장 어려운 부분은 바로 이름짓기입니다. 한국어, 일본어, 중국어, 영어로 4개 국어를 지원하며 검색하면 적절한 영어 변수명을 추천해주는 사이트 입니다. https://www.curioustore.com/#!/ Curioustore 변수명 짓기, 컬럼명 짓기, 영어약자, 変数名 つけ方, カラム名建てる, 英語の略語, 命名变量, 命名该列, 英文缩写 www.curioustore.com 이걸 그대로 짓지 않더라도 꽤 도움이 될 것 같은 사이트인 것 같습니다.

유용한 사이트 2022.05.16

스위치

연결된 장치의 물리적인 주소를 구분해서 해당 주소가 있는 장치로 데이터를 보내주는 방식 데이터를 전송하는 과정에서 MAC주소를 이용합니다. 더미허브보다 속도저하가 되지 않습니다. 스위칭 PC A가 PC C로 데이터를 보낸다고 가정할 때 port1을 통해 스위치1로 데이터를 전송합니다. 이때 데이터에는 출발지 MAC주소 : A의 정보와 목적지 MAC주소 C의 정보를 담아 보냅니다. 스위치1에는 port의 번호와 출발지 Mac 주소를 저장합니다. 스위치1에서는 port1을 제외한 모든 포트에 데이터를 보내줍니다. 이를 플러딩이라고 합니다/ 목적지 MAC주소가 아닌 경우에는 데이터를 파기합니다. 스위치1이 port3을 통해 스위치2로 데이터를 보내고 이때 스위치2에는 port3의 정보와 출발지 MAC주소를 저..