전체글397 [컴퓨터 네트워크] TCP 세그먼트 구조와 재전송 타이머(TCP Segment & Retransmission Timer) 응용 프로세스 데이터 전송 과정 큰 applitcation 데이터를 자르는 기능 = segmentation, 이는 transport 계층에서 수행된다. 데이터의 앞에 자신의 헤드를 붙여 IP 데이터로 만든다. IP 데이터그램을 데이터 링크의 프레임으로 캡슐화(Encapsulation)해서 보낸다. TCP 세그먼트 헤더(control information) 필드 + 데이터(payload) 필드 헤더: mandatory(필수), 데이터: optional(옵션) MSS(Maximum Segment Size) 데이터 필드에 포함되는 응용 메시지 조각(chunk)의 최대 크기 데이터 링크의 MTU(최대 전송 단위, Maximum Transmission Unit)에 의해 결정(ex. 유선 LAN MTU = 1500.. Computer Network 2022. 10. 13. [컴퓨터 네트워크] TCP 연결관리(Connection Management) 1 : 1 소켓 연결 연결 설정 과정(Handshaking) 필요 서버 연결 소켓: 서버 IP 주소와 서버 Port 번호 공유 가능 멀티캐스팅(multicasting) 지원 불가 멀티캐스팅은 UDP에서 지원된다. TCP에서는 불가능하다. Full-duplex(전이중) 통신 양방향 동시 세그먼트 전송 MSS(Maximum Segment Size): 세그먼트의 데이터 필드 최대 크기(보통 1460 바이트이다.) 송신 버퍼에서 MSS 단위로 송신 바이트 스트림(Byte Stream) 전송 송신 프로세스가 소켓의 송신 버퍼에 전달(write)한 바이트 스트림을 수신 소켓의 수신 버퍼에 순서대로 전송한다. 송신 프로세스는 송신 버퍼에 임의의 크기의 바이트열을 쓴다.(write) TCP는 세그먼트 단위(MSS)로 .. Computer Network 2022. 10. 12. [디자인 패턴] 관찰자 패턴(Observer 패턴) 관찰자 패턴(Observer 패턴)이란? 객체 사이에 관계가 이루어져 있을 때, 한 객체가 바뀌는 것을 계속 확인하고 있는 것이 아니라 상태가 변화됐을 때 그에 의존하는 객체에게 알려주는 패턴이다. 즉, 관찰하는 객체가 능동적으로 관찰하는 것이 아닌 관찰 대상으로부터 어떤 사건이 발생하였을 때 수동적으로 통보해주길 기다리는 것이다. 사용하는 이유 예를 들어보자. 기상청이 있을 때 시민들이 기상청에서 새로운 측정이 있는지를 계속 관찰하고 있는 것은 비효율적이다. 기상청에서 새로운 측정을 했을 때, "시민들에게 이러한 측정이 있었다!"라고 알려주는 것이 효율적이다. 위와 같이 WeatherData 클래스가 있을 때 온도, 습도, 기압 메서드는 계속해서 새로운 정보를 준다고 하자. 이제 measurements.. 디자인 패턴/Design Pattern 2022. 10. 11. [디자인 패턴] 전략 패턴(Strategy Pattern) 전략 패턴(Strategy Pattern) 알고리즘 군을 정의하고 캡슐화해주며, 서로 언제든지 바꿀 수 있도록 해주는 방법이다. 즉, 객체가 해야 하는 행위들을 각각 전략으로 만든 후, 동적으로 행위의 수정이 필요한 경우 전략을 바꿔주는 것만으로 수정하는 패턴이다. 왜 사용하는가? 예시를 들고, 이를 통해 전략 패턴을 왜 사용하는지 알아보자. 이처럼 Duck 클래스가 있다고 하자. 이 오리 클래스 안에는 quack 메서드와 swim 메서드, display 메서드가 있다. 이 Duck 클래스를 상속받는 MallardDuck과 RubberDuck 클래스 또한 울음소리를 낼 수 있고, 수영을 할 수 있다. 만약 여기서 Duck 클래스에 fly 메소드를 추가시킨다면 어떨까? RubberDuck 클래스는 고무오리.. 디자인 패턴/Design Pattern 2022. 10. 10. [컴퓨터 네트워크] 오류 복구3: Selective_Repeat ARQ Selective-Repeat 오류 세그먼트만 재전송 송신자 ACK가 회신되는 RTT동안 링크에 최대로 송신 윈도우 크기인 Ssize개의 세그먼트를 전송한다. 누적 ACK(accumulative ACK)를 수신하면 송신 윈도우를 누적 ACK 수만큼 이동한다. 비누적 ACK(non-accumulative ACK)를 수신하면 해당 세그먼트의 ACK 수신 사실을 기록한다. 세그먼트 재전송 타이머가 종료될 때까지 ACK가 수신되지 않으면 해당 세그먼트를 재전송한다. 송신 윈도우(send window) 송신 가능한 순서번호 범위 송신 후 버퍼에 유지되어야 할 세그먼트의 범위 누적 ACK(accumulative ACK) 송신 윈도우 내에서 누적적으로 순서 번호가 맞는 ACK 비누적 ACK(non-accumulati.. Computer Network 2022. 10. 9. [컴퓨터 네트워크] 오류 복구2: Go-back-N ARQ 파이프라이닝 ACK가 회신되기 전 RTT동안 링크에 M개의 세그먼트를 전송 장점 링크 효율 제고(Stop-and-Wait보다 M배 높은 효율을 갖는다. Stop-and-Wait는 segment를 보내고 Ack이 올 때까지 기다려 그 시간 동안 링크를 비워둔다. 따라서 링크 효율의 떨어진다. 요구사항 최대 파이프라이닝 세그먼트의 수 M(송신윈도우, send window)보다 큰 순서번호(Sequence Number) 사용 SN필드 m비트: 2m > M (m과 M의 관계는 오류 복구 유형에 따라 결정된다.) 순서번호: [0, 2m-1], mod 2m 오류 복구 유형 Go-back-N ARQ Selective-Repeat ARQ Go-Back-N 오류 세그먼트부터 이후의 모든 세그먼트를 재전송한다. 동작 과정.. Computer Network 2022. 10. 9. [컴퓨터 네트워크] 오류 복구1: Stop-and-wait ARQ 정보 전송 단위 IP, UDP -> 데이터그램(datagram) TCP -> 세그먼트(segment) IP, UDP는 오류 복구 지원을 하지 않는다. 세그먼트 구조 세그먼트 오류 세그먼트 훼손: 훼손된 세그먼트 도착(Checksum으로 확인) 세그먼트 손실: 라우터 / 스위치에 세그먼트 미도착(중간 통신장치의 버퍼 오버플로우) 세그먼트 수신 확인 세그먼트 정상 수신 -> 수신확인(ACK) 세그먼트 회신 훼손 세그먼트 수신 -> 폐기 -> 미수신 세그먼트 미수신 -> 인지 불가 ACK(acknowledgement) 수신자가 데이터 세그먼트의 정상 수신을 확인하기 위해 송신자에게 보내는 특수한 세그먼트 세그먼트 미수신 확인 세그먼트 전송 후 타이머(timer) 개시 타이머 종료까지 ACK 미도착하면 오류 타.. Computer Network 2022. 10. 5. [컴퓨터 네트워크] UDP와 검사합(checksum) UDP 서비스 포트번호 기반의 다중화 서비스 서버: Well-Known Port Well-Known = 잘알려져 있어야한다. -> 누구한테? 클라이언트한테. 클라이언트: Ephemeral Port Ephemeral Port = 임시 포트 비연결형(connectionless) 전송 서비스 통신 소켓 간의 연결 설정이 없다 -> 연결 설정 지연시간을 피할 수 있다.(HandShaking) 소켓 간 연결이 없으므로 데이터를 전송할 때 목적지 정보를 지정해줘야 한다. 데이터그램 실시간 전송 서비스 응용 프로세스로부터 데이터가 송신 소켓에 전달되면, 송신 UDP는 해당 데이터를 포함하는 UDP 데이터그램을 생성한다. 각 데이터그램은 IP를 통해 독립적으로 목적지 UDP 소켓에 전송한다. 응용 인터넷 전화 등 실시.. Computer Network 2022. 10. 5. [컴퓨터 네트워크] 트랜스포트 계층(Transport Layer) 서비스 네트워크 계층 서비스 호스트(Host) 간의 통신 인터넷 호스트 간에 패킷(데이터그램) 전달 ※ 패킷(데이터그램): 인터넷 네트워크 계층에서 전달되는 단위 호스트의 인터넷 통신 장치: NIC(Network Interface Card) 최선형(Best-effort) 서비스 자원이 허락하는 범위 내에서 최적의 통신 서비스 제공 자원이 부족한 경우 지연시간 발생, 패킷 훼손/손실 발생 가능: 비신뢰 서비스(unreliable service) 최선형 서비스와 반대되는 개념으로 보장형(Guaranted) 서비스가 있다. 비연결형(Connectionless) 서비스 패킷 전달 경로가 다를 수 있다. 패킷 도착 순서가 다를 수 있다. IP(Internet Protocol) IP 주소 기반의 패킷(데이터그램) 전달 I.. Computer Network 2022. 10. 5. 객체지향 프로그래밍2 SOLID 객체지향 설계 원리 중 가장 중요한 5가지가 있는데, 이 5가지를 합쳐 SOLID라고 한다. Single Reponsibility Principle: 클래스의 응집성이 높아야 한다. Open-Closed Principle: 코드 수정없이 확장이 가능해야 한다. Liskov Substitution Principle: 상위 타입은 항상 하위 타입으로 교체가 가능해야 한다. Interface Segregation Principle: 필요없는 것을 구현하도록 강요하지 않아야 한다. 즉, interface의 덩치가 작아야 한다. Dependency Inversion Principle: 클래스는 구체적 클래스 대신에 상위 추상 타입이나 interface에 의존해야 한다. SRP(Single Reponsi.. 디자인 패턴/객체지향 프로그래밍 2022. 10. 4. 객체지향 프로그래밍1 객체 간 관계 vs 클래스 간 관계 하나의 프로그램을 개발할 때 여러 종류의 객체를 사용한다. 객체는 보통 독립적으로 동작하지 않으며, 다른 객체와 다양한 관계를 맺는다. 객체 간 관계는 보통 동적 관계이기에 프로그램이 실행되는 동안 바뀔 수 있다. 객체 간 관계는 크게 두 개의 관계로 구분된다. 사용 관계(use-a) -> 논리적 관계 포함 관계(has-a) -> 물리적 관계(구현 형태에 의해 결정된다.) 한 객체가 다른 객체를 멤버 변수로 유지하는 경우 논리적으로 전체-부분 관계를 나타내기 위해 주로 사용한다. 이번에는 클래스 간 관계를 보자. 클래스 간 관계는 객체 간 관계와는 달리 정적이다. 따라서 코드를 수정하지 않는 이상 관계가 변하지 않고 고정된다. 클래스 간 관계 또한 두 가지의 종류가 있.. 디자인 패턴/객체지향 프로그래밍 2022. 10. 4. [백준/BOJ] 1926번: 그림 문제 https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 해설 그림이 그려진 영역의 개수와 가장 큰 영역의 넓이를 출력하는 문제이다. bfs를 통해 문제를 풀 수 있다. 입력을 모두 받고, 2중 반복문을 수행하며 아직 방문하지 않은 1이 찾는다. 이러한 1을 찾았다면, bfs를 수행시켜 그림의 영역을 구한다. 그림의 영역을 구하면서 방문 여부 처리를 해주며 이 칸에 또 방문했을 때 bfs를 수행할 일이 없도록 해준다. 이처럼 아직 방문하지 않은 1을 찾.. PS(Problem Solving)/BOJ 2022. 10. 1. 이전 1 2 3 4 5 6 7 8 ··· 34 다음 728x90