Switch, Router? Mac 주소, IP 주소? ARP?
·
Network
L2 Switch (Layer 2 스위치)다른 이름: 일반적으로 스위치(Switch)라고도 불림.작동 계층: OSI 모델의 데이터링크 계층(2계층)에서 작동.역할:MAC 주소를 기반으로 데이터를 전송(스위칭).같은 네트워크(LAN) 내에서 내부 단말 기기들을 구분하고, 효율적으로 데이터 프레임을 전달.특징:MAC 주소 테이블(CAM 테이블)을 유지하여 효율적으로 스위칭.데이터 충돌(Collision)을 방지하고 네트워크 성능을 향상.Router (라우터)작동 계층: OSI 모델의 네트워크 계층(3계층)에서 작동.역할:IP 주소를 기반으로 데이터를 경로 지정(라우팅).서로 다른 네트워크(LAN ↔ WAN) 간의 데이터를 전달하고 구분.특징:패킷을 목적지 네트워크로 효율적으로 전달하기 위해 라우팅 테이블을 ..
TCP 빠른 재전송과 흐름제어 메커니즘
·
Network
빠른 재전송(Fast Retransmit)빠른 재전송(Fast Retransmit)은 TCP의 혼잡 조절에 추가된 정책이다. 패킷을 받는 쪽에서 먼저 도착해야 할 패킷이 도착하지 않고 다음 패킷이 도착한 경우에도 ACK 패킷을 보낸다. 단, 순서대로 잘 도착한 마지막 패킷의 다음 패킷의 순번을 ACK 패킷에 실어서 보낸다. 따라서 중간에 패킷하나가 손실되게 되면 보내는 측에서는 순번이 중복된 ACK 패킷을 받게 되고, 이것을 감지하는 순간 문제가 되는 순번의 패킷을 재전송해 줄 수 있다. 빠른 재전송은 중복된 순번의 패킷을 3개 받으면 재전송을 한다. 그리고 이런 현상이 일어나는 것은 약간 혼잡한 상황이 일어난 것이므로 혼잡을 감지하고 창 크기를 줄이게 된다. 한마디로, 데이터 전송 패킷 손실이 의심될 ..
파이프라이닝 프로토콜
·
Network
파이프라인 프로토콜은 데이터를 연속적으로 전송하며, ACK를 기다리지 않고 다음 데이터를 전송할 수 있는 효율적인 흐름 제어 방식입니다. TCP는 데이터를 전송할 때 파이프라인 방식을 사용하며, 이 방식에는 Go-Back-N과 Selective Repeat 기법이 있습니다. TCP는 두 기법을 혼합하여 신뢰성과 효율성을 동시에 구현합니다. Go-Back-N 방식은 receiver 측에서 순서대로 받지 못한 패킷이 있다면 해당 패킷부터 다시 재전송 하는 방식이다.Selective Repeat 방식은 receiver 측에서 받은 각각의 패킷들에 대해 ACK을 보내는 방식이다.요약전송후 대기 프로토콜은 패킷을 전송하고 그 패킷에 대한 수신 확인 응답을 받고나서,다음 패킷을 전송하는 방식 입니다. 이러한 방식은..
Forward Proxy, Reverse Proxy
·
Network
Forward Proxy일반적으로 프록시라고 하면 포워드 프록시를 의미한다. 프록시 서버는 같은 내부망에 존재하는 클라이언트의 요청을 외부 네트워크(인터넷)로 중계한다.장점클라이언트 보안: 방화벽 역할. 프록시 서버에 룰을 추가하여 특정 사이트에 접속하는 것을 막을 수 있다.캐싱: ex. 캐싱된 페이지 로드하여 조회 속도 향상암호화: 클라이언트 요청을 프록시 서버에서 암호화. ex. 클라이언트 ip를 (보안을 위해) 감춰주는 역할Reverse Proxy리버스 프록시는 서버의 앞단에 위치하여 클라이언트 요청을 여러 대상 서버로 분산하여 전달하는 역할을 한다.장점로드 밸런싱서버 보안: 웹 서버를 DMZ에 놓고 사용을 할 수 있지만 웹 서버는 통상적으로 DB에 연결이 되어 있으며 웹 서버에 대한 공격이 DB ..
공개키? 개인키?
·
Network
공개키공개키 암호화 과정에서 키 쌍으로 생성되는 키 중 누구나 공개 가능한 키로, 누구나 이 키에 접근 가능하다.개인키공개키 암호화 과정에서 키 쌍으로 생성되는 키 중 개인으 비밀키로, 절대 노출되어서는 안되며, 안전하게 보관되어야 하는 키다.데이터 보안: 아래 시나리오는 공개키로 평문을 암호화 하고, 암호문으로 다시 개인키로 복호화 하는 과정전자 서명: 개인키로 해시값을 암호화 하고, 암호화 된 해시값을 개인키로 복호화 하는 과정전자 서명위 2번의 시나리오에서는 해시값을 개인키로 암호화를 하고, 공개키로 복호화한다. 그렇다는 것은 모든 사람들이 나의 공개키로 복호화를 할 수 있다는 것인데 암호문을 모두가 복호화 한다면 무슨 이점이 있을까?대칭키의 문제점 '부인'을 방지할 수 있다!나의 개인키로 암호화 ..
HTTP/2.0
·
Network
HTTP /2.0 - Binary Protocol기존에 HTTP1.1 대 버전은 메시지 구성이 Plain Text(평문)을 사용하고, 개행으로 구별되었다.HTTP 2.0 대에서는 메세지 구성이 바이너리 포멧으로 인코딩 된 Message, Frame으로 되어있다.쉽게 말하자면 기존에 텍스트 기반으로 Header 와 Data가 연결되어 있었던 HTTP 1.1 대 버전들과 다르게 HTTP/2 는 메세지를 Binary 단위로 구성하고, 더 작은 프레임으로 쪼개서 관리한다.HTTP/2 의 패킷들은 더 작은 단위로 압축이 되는데, 이때 Frame 과 Message, Stream 이라는 개념이 새롭게 도입된다.Frame : HTTP/2 의 통신 최소 단위이다. 모든 패킷에는 하나의 Frame Header가 포함된다...
Http 상태코드
·
Network
1xx 요청 수신되어 처리 중 거의 사용 X 2xx 요청 성공 200, 201, 202, 204 201 Created 요청 성공해서 리소스 생성 Location header를 응답에 추가 생성된 리소스는 Location header(리스소 위치) 필드로 식별 202 Accepted 요청이 접수되었으나 처리가 완료되지 않음 배치 처리에 주로 사용 거의 사용 X 204 Not Content 서버 요청 성공했지만, 응답 페이로드 본문에 보낼 데이터가 없음 ex) save 버튼. save 눌러도 같은 화면 유지 3xx Redirection 요청 완료를 위해 유저 에이전트(웹브라우저) 추가 요청 301, 302, 303, 307, 308 리다이렉션 흐름 웹 브라우저는 3xx 응답 결과에 Location heade..
TCP 네트워킹(2)
·
Network
병렬 처리= 동시 작업처리왜 병렬처리가 필요할까? 블로킹이 되면 다른 작업을 수행하지 못한다.  작업 쓰레드가 많아지면 리소스를 더 많이 사용하므로 서버의 성능은 떨어진다. 서버의 폭주(다운) 현상도 같은 이유이다. 해결방법은 서버에서 쓰레드를 제한된 개수만큼 운영하는 것이다. 제한된 쓰레드를 사용하려면 쓰레드 풀을 사용하면 된다.    작업을 thread pool에서 처리할 수 있도록 Runnable 객체를 만들어서 ExecutorService에 sumbit 메소드로 제공하는 코드를 작성해야 한다. UI를 변경하려면 Platform.runLater을 작성하고, 안에 UI 변경 코드를 넣는다고 생각하자. UI 변경을 수행하는 쓰레드는 쓰레드 풀의 쓰레드가 아님을 주의하자.
TCP 네트워킹(1)
·
Network
TCP- 연결 지향적 프로토콜(=통신을 위해 연결을 우선): 연결을 해야 되기 때문에 시간을 소요 함- 통신 회로 고정- 데이터 전달 정확하고 안전(연결을 성공시키면 데이터를 전달하기 때문에)-TCP를 지원하기 위해 자바에서는 2가지 java.net API 제공: ServerSocket, Socket   서버에서는 연결 수락을 위해 ServerSocket을 사용한다. ServerSocket은 특정 포트를 가지고 실행을 한다. 이것을 바인딩 포트라고 한다. 바인딩이란 서버가 실행될 때 물고 들어가는, 즉 연결이 됨을 의미한다. ServerSocket은 연결요청이 들어올 때까지 대기해야 한다. 해당 메소드는 accpet()이다. accept()는 연결 요청이 들어오면 연결을 수락하는 역할을 한다. accep..
네트워크 기초
·
Network
서버 서비스를 제공하는 프로그램 클라이언트 서비스를 받는 프로그램. 네트워크 데이터를 필요로 하는 모든 애플리케이션 해당 IP 번호 컴퓨터  식별번호. 0~255 사이의 정수, xxx.xxx.xxx.xxx 포트 번호 같은 컴퓨터의 프로그램들 식별 번호. 0~65535 사이의 정수    package inetaddress;import java.net.InetAddress;import java.net.UnknownHostException;public class InetAddressExample { public static void main(String[] args) { try { InetAddress local= InetAddress.getLocalHost(); ..