** Web

 - web page는 여러가지의 objects 들로 구성되어 있다.

    ( HTML, JPEG, Java applet, audio file ..... )

 - 각 objects 들은 URL로 지정된다 

    ( Host name + path name ) --> (www.xxxxxxx.edu + / something/pic.jpg )

 

** Web's application layer protocol

 - client - server model

  --> client : 서버로 부터 요청과 수신을 하여 web objects를 보여준다 (display)

  --> server : HTTP protocol 을 사용하여 objects 요청을 받아 보내준다.

 

 ** TCP

  --> 먼저 클라이언트가 TCP connection을 시작한다.

  --> 서버가 클라이언트로 부터 TCP connection을 수락하고

  --> 서버와 클라이언트가 메시지를 주고 받는다.

  --> 끝나면 close로 연결을 끝는다.

 

 ** HTTP

 - 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 이렇게 규약을 정해두었기 때문에 모든 프로그

   램 이 이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있게 되었다.

 - HTTP는 상태를 저장하지 않는다 ( stateless )

 - HTTP connection 에는 매번 connection 을 만들어서 주고 받는 non-persistent HTTP 방식이 있고

                                 한번 connection 을 만들어서 여러개의 objects를 주고 받는 persistent HTTP 방식이 있다.

 - non-persistent의 경우 추가적으로 사용해야 하는 (메시지 전송과 수신을 위해) overhead가 상대적으로 더 크다.

 - 그렇다고 반드시 non-persistent방식이 좋은 것은 아니다. 

    -->  non-persistent를 사용하는데 한번에 여러개의 연결을 parallel하게 맺어 여러데이터를 한번에 보내기도 한다.

 

 ** cookies

  - HTTP는 stateless 인데 cookies 를 사용하면 stateful하게 가능하다

  - 보통 많은 웹은

    1. cookie header line of HTTP response message

    2. cookie header line in next HTTP request message

    3. cookie file kept on user's host, managed by user's browser

    4. back-end database at Web site

  - 4가지 기능을 위하여 쿠키를 사용한다.

  - 예 ) ID,PW 인증, 장바구니 등등

  - 장점 : 좀 더 편리하게 Web browsing 을 하게끔 도와준다.

  - 단점: privacy 문제가 발생 할 수 있다.

 

 ** Web caches (proxy server)

  - 자주 사용하는 정보의 경우 메인서버 까지 가지 않고

    proxy server를 두어 그쪽에서 저장해둔 정보를 빼오는 방법이다.

    (locality 적 특성을 가진다. )

  - 클라이언트 - 서버간의 통신속도를 증가시키는 것 보다 훨씬 저렴하다 (cheap!)

'학부생 공부 > 네트워크' 카테고리의 다른 글

SMTP (E-mail)  (0) 2020.04.12
FTP  (0) 2020.04.12
TCP, UDP  (0) 2020.04.06
Application Layer  (0) 2020.04.04
Internet structure  (0) 2020.03.26

** TCP: Transmission Control Protocol

 - reliable transport (between sending and recieving process)

 - flow control : sender won't overwhelm receiver (받는 쪽의 버퍼 사이즈 이상으로 

                                보내지 않는다)

 - connection - oriented (연결 지향형) - 클라이언트와 서버간의 통신전 setup이 요구된다

                                                                              ( 데이터를 보내기전에 connection 을 먼저 만든다 )

 - timing,  minimum throughput 은 보장하지 않는다.

 

**UDP : User Datagram Protocol

 - unreliable data transfer (between sending and recieving process)

 - TCP보다 빠르다.

 - 지원하지 않는 것이 많다 (reliability, flow control, timing, throughput, security )

 

**그렇다면 왜 UDP를 버리지 않고 사용하는 곳이 있을까?

 - 예를들면, 비디오나 오디오를 다운받을 때 데이터의 약간의 변형 정도는 허용이 될때 TCP보다 빠르게 전송할 수 있다.

 - streaming multimedia 나 Internet telephony  등에서 TCP와 UDP를 섞어서 사용한다.

 

'학부생 공부 > 네트워크' 카테고리의 다른 글

FTP  (0) 2020.04.12
Web and HTTP  (0) 2020.04.06
Application Layer  (0) 2020.04.04
Internet structure  (0) 2020.03.26
Network Core  (0) 2020.03.25

 

 

 ** Layer 계층 

 -- 5계층 : Application Layer

 -- 4계층 : Transport Layer

 -- 3계층 : Network Layer

 -- 2계층 : Linked Layer

 -- 1계층 : Physical Layer

 

 ** applications  의 가능한 구조들

 -- client, server

 -- peer-to-peer(P2P)

 

 ** Client - server architecture

 -- server : 항상 켜져 있어야 한다.

               IP가 일정해야 한다. (변동이 없는)

               확장이 가능 해야 한다

 -- clients : 서버와 통신

               간헐적(즉, 항상 켜져있지 않아도 된다.)

               dynamic IP adresses

               peer to peer 간의 서로 직접적인 연결은 되지 않는다.

               (서버로 가서 db를 뒤져서 친구의 ip주소를 찾고 연결하는 방식은 가능)

 

 ** P2P architecture

 - 항상 켜져있는 서버가 필요 없다.

 - 직접적 통신이 가능

 - self scalability (서로가 스스로 확장하게 되는 구조)

 - 항상 연결 되어 있는 것이 아니므로 ip가 바뀐다 (dynamic)

 - complex management

 

**Processes communicating

 - 한 호스트 안에 있는 프로세스들은 IPC(inter-process-communication)을 통해 주고 받는다

 - 다른 호스트 사이에서는 messages를 교환 

 - 하나의 device가 (client, server) 두가지 역할을 모두 수행하는 것이 P2P architecture

 

** Sockets

 - 프로세스들은 소켓을 통해 메시지를 주고 받는다.( 마치 문 같은....) 

 - 소켓을 통해 나가 infrastructure을 통하여 통신

 

** Addressing processes

 - messages를 받기 위해서는 프로세스는 identifier를 반드시 가지고 있어야 한다.

 - host device는 IPv4의 경우 32bit IP address를 가지고 있다 (unique)

 - 하지만 스마트폰이나 컴퓨터에서 하나의 프로세스만 실행하지는 않는다.

     --> 즉 ip address만으로는 부족하다.

 - 따라서 ip address + port numbers + protocol network flow를 정의 한다.

 - 이 flow는 같은 sender와 reciever 사이에서 여러개가 정의 가능하다.

 

 ** application이 요구하는 것

 - 각 어플리케이션 별로 요구사항이 다를 수 있다. (다양)

 - 예를 들면, 영상을 다운받을 때는 너무 느리면 안되겠지만 그렇다고 처리속도(throughput)에 그렇게 예민하지는 않다

 - 게임 같은 경우에는 data loss에는 덜 민감해도 time sensitive는 매우 중요하다.

     1. data integrity(데이터 무결성) 

     2. timing

     3. throughput

     4. security

     5. ......

'학부생 공부 > 네트워크' 카테고리의 다른 글

Web and HTTP  (0) 2020.04.06
TCP, UDP  (0) 2020.04.06
Internet structure  (0) 2020.03.26
Network Core  (0) 2020.03.25
인터넷(Internet) 이란 ?  (0) 2020.03.22

** 모든 (each ISP) 를 서로에게 모두 연결 한다면?

 - 각각의 회선이 굉장히 빠르다.

 - 다양한 경로제공이 가능하다

 - 단, 비용이 매우 많이 든다.

 

** 하나의 Global ISP를 구성 한다면 ?

 - 이 또한 굉장히 좋지만 이런 global ISP를 구성하는 것이 현실 여건상 쉽지가 않다.

 

**현재 Internet structure

-->

 - IXP : Internet exchange point

 - peering link 에 의해 가격에 관한 문제가 발생하기도 한다.

 - regional net으로 clustering을 하여 조금 더 빠르게 한다.

 - 최근에는 구글 같은 content provider network도 직접 이에 관여 하고 있다.

 - 우리가 아는 SKT, KT 등이 Tier 1 ISP 이다.

 

 

 

'학부생 공부 > 네트워크' 카테고리의 다른 글

Web and HTTP  (0) 2020.04.06
TCP, UDP  (0) 2020.04.06
Application Layer  (0) 2020.04.04
Network Core  (0) 2020.03.25
인터넷(Internet) 이란 ?  (0) 2020.03.22

https://www.acmicpc.net/problem/1764

 

1764번: 듣보잡

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 영어 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.

www.acmicpc.net

그냥 모든 경우의 수를 입력 받은 후 (듣지 못하는 사람) 을 보지 못하는 사람을 입력받을 때 

 

듣지 못하는 사람 전체와 비교를 하면 시간 초과가 뜹니다 (n,m이 무려 500,000이기 때문에 )

 

그래서 오랜만에 binarysearch를 직접 구현하여 문제를 해결 하였습니다.

 

그리고 문제에서 사전 순 배열을 원하였으므로 중간에 sort를 사용하시면 됩니다.

'학부생 공부 > 연습문제(백준)' 카테고리의 다른 글

백준 1059  (0) 2019.12.31
백준 16212  (0) 2019.12.31
백준 16433  (0) 2019.12.31
백준 10995  (0) 2019.12.30
백준 15947  (0) 2019.12.30

** the network core ?

 - mesh of interconnected routers

 - "packet - switching" : hosts break application-layer messagers into packets

                                                 store-and-forward

                                                (entire packet must arrive at router before it can be transmitted on next link)

** end-end (source-destination) delay = 2L / R (propagation delay는 0이라고 가정한다면 ) 

     ex) L = 7.5Mbits , R = 1.5Mbps 라면 one-hop transmission delay = 5 sec

 

** queueing delay, loss

 - router에 들어오는 속도와 나가는 속도가 다르다면 (다수로 부터 나갈 수 있는 속도보다 빨리 들어온다면)

    queueing delay가 발생, 저장 가능한 양을 넘어간다면 loss가 발생 --- 설정은 어떻게 해놓느냐에 따라 다르다.

 

** Two key network - core functions

 - routing(최단거리를 계산 - > forwarding table을 업데이트 ) 과 forwarding

 - router 장비가 비싼이유? --> 하는 일은 routing과 forwading 이지만 초당 많은일 (10만, 100만,....) 등에 따라 매우 비쌈

 

** circuit switching vs packet switching

 -  circuit switching (회선을 독점하여 쓰고 싶을 떄 좋다. ) - nosharing (시간, 또는 회선 대역을 나누어 쓰는 TDM,FDM은 존재)

 -  parcket switching (많은 사람이 쓸 수 있지만 너무 많이 몰리면 속도를 보장받지 못할 수 있다.)

 -  안정적인 service를 원할 때는 circuit-switching이 좋을 수도 있다.

 

'학부생 공부 > 네트워크' 카테고리의 다른 글

Web and HTTP  (0) 2020.04.06
TCP, UDP  (0) 2020.04.06
Application Layer  (0) 2020.04.04
Internet structure  (0) 2020.03.26
인터넷(Internet) 이란 ?  (0) 2020.03.22

** 인터넷이란? 

 - "network of networks"

 - mobile network, global ISP, home network, regional ISP, institutional network 등등 을 과 연결된 모든 네트워크

 - client에게 서비스를 제공하는 인프라

 

 

** IETF: Internet Engineering Task Force (승인 해주는 기관) - Standard

 

 

** 프로토콜이란? (what's a protocol)

 - 컴퓨터와 컴퓨터사이, 또는 한 장치와 다른 장치 사이에서 데이터를 원활히 주고받기 위하여 약속한 여러 가지 규약

    ( 출처: 네이버 사전)

 -  ex )  TCP connection request(client) 를 보내면 TCP connection response(server) 그후 자료 요청 밑 파일 전송 등

 

 

** 네트워크의 구조들( network structure)

 -  network edge (host: client and server(서버는 때때로 데이터센터(data centers)에 있다)

 -  네트워크에 접근 하는 physical media (유선, 무선 등)

 -  network core (interconnected routers, network of networks)

 

** physical media들의 네트워크 접근

 - residential access nets (집)

 - institutional access network ( 학교, 회사 등)

 - mobile access networks (스마트폰,,,,)

 - 공유매체일수도 있고 전용매체 일 수도 있다. (shared or dedicated? )

 

 

** 네트워크 연결 방식

 -  1. DSL(digital subscriber line) : 옛날에 주로 쓰던 연결 방식이다.

                                            전화 라인을 사용 , 속도가 비대칭적이다.

                                            ( 주로 데이터를 업로드(<1Mbps) 하려기보다 받으려고(<10Mbps) 하는 경우가 많았                                               기 때문에)

 - 2.  cable network : 원룸 등에서 분리배선 시키는 방식 (shared network)

                            HFC(hybrid fiber coax) -- 광섬유와 동축케이블을 함계 사용하는 선로망.

                                                             이 네트워크는 전부 광섬유로 구선하는 네트워크보다 비용이

                                                             적게 들면서 광섬유의 안정성 및 전송 속도 이점을 최대한 이용.

                            DSL 방식은 중앙서버에 전용 노선을 가지는 것과 달리 이 방식은 ISProuter을 통한 shared access                              network 이다.

 - 3. home netwok : cable 또는  DSL을 통해 들어와서 ROUTER를 사용하여 무선 또는 유선 통신 (wireless or wired )

 - 4. Enterprise access networks( Ethernet) : 학교나 회사 등등

                                                         더 높은 계층의 장비가 필요 (2계층 스위치, 3계층 라우터 등을 통해 연결)

 

** phsical media

 - 1. coaxial cable (동축 케이블) 

 - 2. fiber optic cable (광케이블) - 빠른속도, 단 잘 휘지(?) 않는다.

 - 3. radio - 반사, 간섭, 장애물 등에 의해 통신오류가 발생할 수 있다.

 

'학부생 공부 > 네트워크' 카테고리의 다른 글

Web and HTTP  (0) 2020.04.06
TCP, UDP  (0) 2020.04.06
Application Layer  (0) 2020.04.04
Internet structure  (0) 2020.03.26
Network Core  (0) 2020.03.25

1. Redirection을 구현

 

Redirection(in) 구현 부

 

Main() 함수에서 자식 프로세스 exec을 수행하기 전에 “<”가 있는지 확인후

 

있을 경우 dup2함수를 이용하여 redirection 기능을 수행하도록 구현 하였습니다.

 

그리고 마지막 for문을 이용하여 이전 커맨드벡터에서 떙겨주었습니다

 

( 리다이렉션 명령어가 들어있던 부분)

 

 Redirection(out) 구현 부

 

마찬가지로 main()함수에서 자식프로세스가 exec을 하기 전에 redir_out함수로 들어가서

 

“>” 명령어가 있는지를 확인하고 있다면 dup2함수를 이용하여 redirection을 수행후

 

마지막 for문을 이용하여 커멘드벡터를 떙겨주었습니다.

 

( 리다이렉션 명령어가 들어있던 부분)

 

2. 파이프 처리 기능

 

받은 커맨드문장(cmdvector) 에서 파이프가 있는지 와 커맨드문장의 어느 위치에 파이프가

 

있는지를 확인합니다.

 

만약 파이프 명령어가 없다면 바로 리턴 합니다.(리턴 값 1)

 

그리고 for문을 통해서 파이프 명령어(“|”) 앞, 뒤 명령어들을 나눠줍니다.

 

그리고 파이프를 생성하여 줍니다.

 

그리고 첫 번째 받은 명령어를 리다이렉션을 이용하여 출력을 돌려줍니다.

 

그리고 함수 내에서 자식을 생성한 후 자식은 두번째 명령어를 실행하는데

 

dup함수와 리 다이렉션을 이용하여 입력을 첫 번째 명령어(cmdpipe1)로부터

 

입력을 받도록 리다이렉션을 합니다.그리고 결과의 출력이 표준출력이 아닌 파이프를

 

통해서 나가도록 파이프출력으로 내보내도록 dup함수를 통해 설정합니다.

 

그 후 exec을 실행합니다.

 

부모 프로세스는 3번째 명령어(cmdpipe3)를 수행합니다.

 

이 프로세는 입력을 파이프를 통해서 입력받도록 dup함수를 이용하여 설정해주고

 

그리고 출력을 redirection을 통하여 조절해줍니다.

 

+ Recent posts