### Aula 07-11-2022
**Exercício 1.** Uma rede *virtual circuit* (VC) é composta por três fases:
* *Connection Setup* --- a camada de transporte contacta a camada de rede a confirmar o destino e o *path* é determinado;
* *Data Transfer* --- autoexplicativo;
* *Tear-Down* --- a camada de rede desliga a conexão e remove os dados da table de *routing*.
**Exercício 2.** Numa rede de datagramas, os dados são trocados entre computadores através de serviços flexíveis, que podem adaptar-se, exercer controlo e recuperar de erros, sem haver conexão; há muitas características diferentes, logo muitos tipos de conexão sem uniformidade. Numa rede VC (*virtual circuit*), é necessário haver conexão, o tempo e os requisitos de confiança são rígidos, com necessidade de garantir serviços.
**Exercício 3.** Os três principais componentes do *Internet Protocol* (IP) são:
* Protocolo de *routing* --- selecionar o caminho;
* Endereçamento --- identificador de 32 bits (IPv4) ou 128 bits (IPv6) para anfitriões e interfaces de *router*, que representa sub-redes (por *Classless InterDomain Routing* (CIDR)), atribuído por *Dynamic Host Configuration Protocol* (DHCP), para fazer *forwarding* de datagramas;
* *Internet Control Message Protocol* (ICMP) --- utilizado por anfitriões e *routers* para controlar e comunicar informação a nível de rede (reporte de erros, pedidos *request*/*reply*).
**Exercício 4.**
```
Dataframe Original: length = 6000, ID = x, fragflag = 0, offset = 0
Maximum Transfer Unit: 1000
Como o header ocupa 20 bytes e 980/8 não é uma divisão inteira,
é necessário escolher o valor mais próximo --- 976
Logo, cada datagrama pode levar 976 bytes de datagrama mais os
20 bytes do header
Datagrama 1: length = 996, ID = x, fragflag = 1, offset = 0
Datagrama 2: length = 996, ID = x, fragflag = 1, offset = 122
Datagrama 3: length = 996, ID = x, fragflag = 1, offset = 244
Datagrama 4: length = 996, ID = x, fragflag = 1, offset = 366
Datagrama 5: length = 996, ID = x, fragflag = 1, offset = 488
Datagrama 6: length = 996, ID = x, fragflag = 1, offset = 610
Datagrama 7: length = 164, ID = x, fragflag = 0, offset = 732
```
**Exercício 5.** DHCP (*Dynamic Host Configuration Protocol*) é permite a anfitriões obter dinamicamente o seu endereço IP quando se juntam a uma rede, através de um servidor com esse serviço. Um equipamento que não tenha acesso direto a um servidor DHCP pode obter um IP através de um pedido em *broadcast*: como nessa subrede não existe servidor DHCP, o *router* faz DHCP *relay* para outra subrede onde sabe que existe o servidor, que por sua vez envia um datagrama que contém o endereço IP atribuído a esse anfitrião.
**Exercício 6.**
| | IPv4 | IPv6 |
| ------------------- | ---- | ---- |
| Fragmentação | Sim | Não |
| Nível de Prioridade | Não | Sim |
| *Checksum* | Sim | Não |
| Opções | Sim | Sim, mas fora do *header* |
| Etiqueta de fluxo | Não | Sim |
### Aula 21-11-2022
**Exercício 1.** A camada de ligação está implementada em cada anfitrião nos adaptadores (NIC, *Network Interface Card*) e tem a responsabilidade de transferir datagramas encapsulados em *frames* entre nós adjacentes de uma ligação numa rede.
**Exercício 2.** A camada de ligação implementa seis serviços:
* *Framing* --- encapsula datagramas em *frames*, adicionando *header* e *trailer* que contêm os endereços MAC de identificação de origem e destino;
* Transferência fiável --- garante que os *frames* não são corrompidos durante a transferência;
* Controlo de fluxo --- ajusta a velocidade entre nós emissores e recetores adjacentes;
* Deteção de erros --- causados por atenuação de sinal, ruído; o recetor deteta a presença de erros e pede retransmissão do emissor ou aborta o processo;
* Correção de erros --- o recetor identifica e corrige bits de erro sem necessidade de retransmissão;
* *Half-duplex*/*Full-duplex* --- permite diferentes formas de transmissão, uma vez que pode ser um de cada vez ou ambos ao mesmo tempo.
**Exercício 3.** Há três tipos de deteção de erros:
* Verificação de paridade (*hardware*):
* Paridade de bit único;
* Paridade bidimensional;
* *Checksum* (*Cyclic Redundancy Check*) (*software*) --- escolher `r` bits CRC tal que o número de bits de dados e os bits CRC a dividir por um gerador de padrão `r + 1` têm resto `0`, se não, deteta-se erros.
**Exercício 4.** Um protocolo de *multiple access* ideal define, sobre um canal de *broadcast* com um *rate* de `R` bits por segundo:
* Quando um nó quer transmitir, pode fazê-lo a *rate* `R`;
* Quando `M` nós querem transmitir, cada um pode fazê-lo a *rate* `R/M`;
* Descentralização total, sem nós especiais para coordenar transmissões ou sincronização de relógios/*slots*;
* Simples.
**Exercício 5.** Os protocolos *multiple access* podem ser de:
* Partição de Canal --- dividir o canal em "peças" pequenas (*slots* temporais, frequência, código), com cada uma alocada a um nó para uso exclusivo (TDMA (*Time Division Multiple Access*), FDMA (*Frequency Division Multiple Access*), CDMA (*Code Division Multiple Access*));
* *Random Acess* --- canal não dividido que permite colisões e consegue recuperar destas (ALOHA (*Additive Links Online Hawaii Area*), CSMA (*Carrier Sense Multiple Access*));
* *Taking Turns* --- os nós executam rondas entre si durante as transmissões de acordo com a quantidade de dados a transmitir (*polling*, *token passing*).
**Pergunta Bónus** --- descrever CSMA/CD.
### Aula 05-12-2022
**Exercício 1.**
| Camada | Serviços | Protocolos |
| ------ | -------- | ---------- |
| Aplicação | Definir tipo, sintaxe, semântica de mensagens trocadas <br> Definir regras como e quando os processos recebem e respondem a mensagens | DNS, FTP, HTTP, HTTPS, IMAP, NTP, OSPF, POP3, SMTP |
| Transporte | Comunicação lógica entre processos de aplicações em anfitriões diferentes | TCP, UDP |
| Rede | *Routing* <br> *Forwarding* <br> *Pipelining* | IP, RIP, OSPF |
| Ligação | *Framing* <br> Transferência fiável <br> Controlo de fluxo <br> Deteção de erros <br> Correção de erros <br> *Half-duplex*/*Full-duplex* | MAP: <br> * *Channel Partitining* (TDMA, FDMA, CDMA) <br> * *Random Access* (ALOHA, CSMA) <br> * *Taking Turns* (*polling*, *token passing*) <br> ARP <br> Ethernet |
| Física | Cabos | N/A |
### Aula 12-12-2022
**Exercício 1.** Comparativamente a ligações com fios, uma ligação sem fios tem:
* Menor força de sinal (*path loss*) --- o sinal de rádio atenua ao propagar-se pela matéria;
* Interferência de outras origens --- frequências padrão (por exemplo, 2.4 GHz) partilhadas com outros dispositivos;
* Propagação por múltiplos caminhos --- o sinal de rádio reflete consoante os objetos, podendo ter tempos de chegada diferentes.
**Exercício 2.**
| | ***Hop* único** | ***Hops* múltiplos** |
| --- | --- | --- |
| **Com infraestrutura** | O anfitrião contecta-se à *base station*, que o liga à Internet (WiFi, WiMAX, *cellular*) | Anfitriões podem ter de transmitir entre vários nós *wireless* para ligar à Internet (redes *mesh*) |
| **Sem infraestrutura** | Sem *base station*, logo, sem ligação à Internet (Bluetooth, redes *ad hoc*) | Sem *base station*, sem ligação à internet, baseiam-se entre todos para efetuar ligações entre si (MANET, VANET) |
**Exercício 3.** *Handoff* permite as mudanças móveis da *base station* que providencia a conexão entre redes, ou seja, os dados que estão a ser transmitidos numa rede continuam a ser transmitidos na nova rede, isto é, a troca de um *host* entre *base stations*.
**Exercício 4.** CDMA --- *Code Division Multiple Access*, nas variantes CD (*Collision Detection*) e CA (*Collision Avoidance*).
**Exercício 5.** CDMA em redes sem fios e FDMA/TDMA combinado em redes celulares.
**Exercício 6.** A IEEE 802.11 é uma família de padrões para redes LAN, PAN e MAN. A IEEE 802.11b é a mais utilizada em contexto domiciliário com 100 a 300 metros de alcance, com um espetro sem licença de 2.4 a 5 GHz de até 11 Mbps, com um *direct sequence spread spectrum* (DSSS) na camada física, em que todos os anfitriões usam o mesmo código de *chipping*.